2015-09-07 152 views
2

我的表:更新列具有一定價值列值具有相同的ID

ID | Number 
------------------- 
| 1 | 0x 
| 1 | 12345678 
| 1 | 12345678 
| 2 | 0x 
| 2 | 0x 
| 2 | 242424 
| 3 | 88888 
| 3 | 88888 
| 4 | 0x 
| 4 | 0x 

表必須更新,讓每一位「0X」將更新到正確的「數字」,如果存在一個。

結果所需要的:

ID | Number 
------------------- 
| 1 | 12345678  <-- Updated 
| 1 | 12345678 
| 1 | 12345678 
| 2 | 242424  <-- Updated 
| 2 | 242424  <-- Updated 
| 2 | 242424 
| 3 | 88888   <- No change on id = 3 
| 3 | 88888   <- No change on id = 3 
| 4 | 0x   <- No change because there's no relevant 'Number' to update 
| 4 | 0x   <- No change because there's no relevant 'Number' to update 
+1

哪裏是你試試? – lad2025

回答

3

Demo of the following query

;WITH CTE AS (
    SELECT Id, Max(number) Number 
    FROM YourTable 
    WHERE Number <> '0x' 
    GROUP BY Id 
) 
UPDATE ut SET Number = c.Number 
FROM YourTable ut 
    JOIN CTE c ON ut.Id = c.Id 
WHERE ut.Number = '0x'