我在SQL Server 2008中有这个表
+----------+----------+----------+
| ID | Date | Desc |
+----------+----------+----------+
| I.001 |01/01/2014| Test |
| I.001 |01/01/2014| Test2 |
| I.002 |02/01/2014| Test3 |
| I.002 |02/01/2014| Test4 |
| I.002 |02/01/2014| Test5 |
+----------+----------+--------- +
并且表格继续进行类似的模式。我期待像这样的结果
+----------+----------+----------+
| ID | Date | Desc |
+----------+----------+----------+
| I.001 |01/01/2014| Test |
| I.001 | NULL | NULL |
| I.002 |02/01/2014| Test3 |
| I.002 | NULL | NULL |
| I.002 | NULL | NULL |
+----------+----------+--------- +
是否有任何SQL脚本允许我获得上述结果?非常感谢提前。
答案 0 :(得分:4)
此处重复表示具有相同的ID
和Date
。要保留的行将是按字母顺序排在第一个DESC
的行。
WITH Cte AS(
SELECT *,
RN = ROW_NUMBER() OVER(PARTITION BY ID, [Date] ORDER BY [Desc])
FROM YourTable
)
UPDATE Cte
SET [Date] = NULL,
[Desc] = NULL
WHERE RN > 1