2015-03-26 3 views
0
WHILE @Suma < @ZalihaVP 
begin 
    Insert into @Promet (Kljuc, Kolicina, Datum, StarostPrometa) 
    select top 1 m.acKey, anQTY, m.adDate, DATEDIFF(d, m.adDate, getdate()) 
    from tHE_Move m inner join tHE_MoveItem mi 
    on m.acKey = mi.acKey 
    where acReceiverStock = 'Y' 
    and acReceiver = @Skladiste 
    and acIdent = @Ident 
    and m.acKey not in(select Kljuc from @Promet) 
    order by adDate desc 

    set @Suma = @Suma + (select SUM(kolicina) from @Promet) 

    if @Suma > @ZalihaVP begin update @Promet set Kolicina = Kolicina - (@Suma - @ZalihaVP) where KLjuc = (select top 1 KLjuc from @Promet order by Datum) end 
    if @Suma > @ZalihaVP begin set @Suma = @ZalihaVP end 
end 

Это мой цикл WHILE, у меня есть проблема здесь. @ZalihaVP = 92 @Suma = 0TSQL - WHILE LOOP

отчеты @ promet.kolicina являются: 40, 50, 50

На третьей записи, @Suma это greather, чем @ZalihaVP 40 + 50 + 50 = 140> @Suma и третья запись не вставлена, но я хочу, чтобы они вставлялись.

Как я могу отправить @Suma < @Zaliha на конце после вставки?

+0

Отправить что? Отправить где? Приходите сюда через год, и если вы поймете свой вопрос, я куплю вам бутылку пива. –

ответ

1

Я думаю, что проблема эта строка:

set @Suma = @Suma + (select SUM(kolicina) from @Promet) 

Там вы установили @Suma к себе плюс все kolicina вместе взятых.

Может быть, это должно быть:

set @Suma = select SUM(kolicina) from @Promet 
+0

Отлично ... это проблема :) – kole1108