使用条件更新多条记录SQL(FIFO)

时间:2015-12-10 10:17:37

标签: sql sql-server

如果这个标题不代表我的问题,我很抱歉。

情景:

  

我为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中是可行的。

提前感谢

1 个答案:

答案 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