2016-02-26 82 views
1

我有一个包含以下几列和数据表:更新列基于其他列的组合

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

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

回答

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;