如果这个标题不代表我的问题,我很抱歉。
情景:
我为ItemA
输出了5个项目
表FIFO:
| date | item | inbound | outbound |
| 13/11/2015 | itemA | 2 | |
| 15/11/2015 | itemA | 8 | |
我的UPDATE脚本现在(错误):
| date | item | inbound | outbound |
| 13/11/2015 | itemA | 2 | 5 |
| 15/11/2015 | itemA | 8 | |
预期结果(右):
| date | item | inbound | outbound |
| 13/11/2015 | itemA | 2 | 2 |
| 15/11/2015 | itemA | 8 | 3 |
我使用的是SQL Server 2008.我的脚本只更新了第一行。如何用SQL实现这一目标? 我在小提琴here上创建场景。我不知道某些脚本会出现错误,但在SQL Server中是可行的。
提前感谢
答案 0 :(得分:0)
我认为您需要按记录处理记录。希望以下代码可以帮助您找到逻辑。 假设每个日期只有一条记录,并且所有项目都有入站。
WHILE @ItemCount>0
BEGIN
SELECT TOP 1 @dat=date,@inbound=inbound FROM FIFO WHERE item='iteamA' AND outbound IS NULL ORDER BY date ASC
IF(@inbound <= @ItemCount)
BEGIN
UPDATE FIFO SET outbound=@inbound WHERE item='iteamA' and date=@dat
ELSE
UPDATE FIFO SET outbound=@ItemCount WHERE item='iteamA' and date=@dat
END
SET @ItemCount=@ItemCount-@inbound
END