根据其他列的组合更新列

时间:2016-02-26 20:34:25

标签: sql sql-server

我有一个包含以下列和数据的表:

Invoice #       Quantity     Item Id
21589              265        L-s20-02-0

在这种情况下,有265条记录具有相同的信息。如果记录的数量与数量相同,我希望能够将数量列更新为1。在这种情况下,如果有265条记录匹配相同的发票号,数量和物料ID

1 个答案:

答案 0 :(得分:2)

这是一个奇怪的请求,但可以使用窗口函数:

;WITH toupdate AS (
      SELECT t.*,
             COUNT(*) OVER (PARTITION BY invoice, item, quantity) AS cnt
      FROM t
     )
UPDATE toupdate
    SET quantity = 1
    WHERE cnt = quantity;