2016-02-26 65 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;