Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запос с преремеными ( помогите переделать его)  [new]
Airblood
Member

Откуда:
Сообщений: 8
Помогите переделать этот запрос.
Мне надо сюда место переменых вставить две таблицы

Приход и продажа
---Таблица Приход
if object_id('tempdb..#Prixod') is not null drop table #Prixod
CREATE TABLE [#Prixod] (

[id] [int] null,
[Kolvo_Prix] [int] null,
[Total] [int] null,
[Price] [int] null,
[Data] [datetime] null,
) ON [PRIMARY]


insert into #Prixod (id,Kolvo_Prix,Total,Price,Data)
select 1, 100, 0 , 2 ,2009/09/05
union all
select 2, 200, 0, 5 , 2009/09/15
union all
select 2, 100 , 2 , 0,2009/09/15
union all
select 1, 50, 0, 6 ,2009/09/08;

---Таблица Продаж
if object_id('tempdb..#Prod') is not null drop table #Prod
CREATE TABLE [#Prod] (
[id] [int] null,
[Total] [int] null
) ON [PRIMARY]

insert into #Prod (Total)
select 1,150
union all
select 2,250

Ниже приблизительный пример того что мне надо переделать в таблицы.
Мне надо чтоб продажи распределялись по приходам и были не больше чем приход также по дате возрастание и связаны по id. Буду блогодаре кто поможет переделать.
У меня не получаеться потом условия что я прописывал с перемеными не работает правильно. Еще если продажа больше кол. приходов то это кол должно лажиться на последнию запись )))

declare
@Kolvo_Prod as int, ---Продажа
@Kolvo_Prix as int ,---Приход
@Total as int, ---Итог продажи
@Price as int ---Цена
---Создаем таблицу приходов
if object_id('tempdb..#Prixod') is not null drop table #Prixod
CREATE TABLE [#Prixod] (


[Kolvo_Prix] [int] null,--
[Total] [int] null,
[Price] [int] null,
) ON [PRIMARY]


set @Kolvo_Prix=50 ---Кол приходов
set @Kolvo_Prod=275 ---Кол продажи надо распределить между приходами
set @Price=1

while @Kolvo_Prod>0 ---Если продажа 0 то конец
begin

set @Price=@Price+1--Увеличеваем цену
set @Kolvo_Prix=@Kolvo_Prix+50 --Увеличеваем приходы
---Условия чтоб продажы не были боьше приходов
set @Total=
case when (@Kolvo_Prod-@Kolvo_Prix)>0 then @Kolvo_Prix
when (@Kolvo_Prod-@Kolvo_Prix)>@Kolvo_Prix then @Kolvo_Prix
when @Kolvo_Prod=@Kolvo_Prix then @Kolvo_Prix
when (@Kolvo_Prod-@Kolvo_Prix)=0 then @Kolvo_Prix
when (@Kolvo_Prod-@Kolvo_Prix)<0 then @Kolvo_Prod

ELSE 0 end
---Для того чтоб цыл остановилься когда будет продажа 0
set @Kolvo_Prod=@Kolvo_Prod-@Kolvo_Prix

--записуем в таблицу
insert #Prixod select @Kolvo_Prix,@Total,@Price

end
--Выводим данные
select * from #Prixod
9 окт 09, 12:08    [7763584]     Ответить | Цитировать Сообщить модератору
 Re: Запос с преремеными ( помогите переделать его)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Эпидемия, прям какая то в последнее время. В поиск по FIFO.
9 окт 09, 12:51    [7764059]     Ответить | Цитировать Сообщить модератору
 Re: Запос с преремеными ( помогите переделать его)  [new]
Airblood
Member

Откуда:
Сообщений: 8
pkarklin,

Помогите понять что такое метод FIFO искал по все поиску есть пару примеров но они не совсем то что мне надо.
И у большинство на писано ищи в поиске метод FIFO (((
У меня ситуация солжна для меня в том что надо соеденить по id и расприделять продажи по дату возрастание
Дайте хоть маленький пример соединение по id и распределением продаж по приходам не привышая приход
9 окт 09, 16:33    [7766183]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить