得到一張有幾列的表格,最后有日期。看起來像:
Col1 Col2 Col3 date
----- ------ ------ ------------
x y z 2022-10-01
x y z 2022-10-10
a b c 2022-10-01
a b b 2022-10-10
w u c 2022-10-15
我要做的是根據前三列洗掉重復項。最新日期留在第 4 列。
試圖列出它:
Select col1, col2, col3, count(*) as counter
from database
group by col1, col2, col3, date
having count (*) > 1;
它不起作用,因為它計算每一行,包括不同的日期。沒有找到任何其他線索
預期輸出為:
| Col1 | Col2 | Col3 | 日期 |
|---|---|---|---|
| X | 是的 | z | 2022-10-10 |
| 一個 | b | C | 2022-10-10 |
| w | 你 | C | 2022-10-15 |
uj5u.com熱心網友回復:
您可以使用公用表運算式并ROW_NUMBER實作此目的:
WITH cte
AS
(
SELECT col1, col2, col3, ROW_NUMBER() OVER (PARTITION BY col1, col2, col3 ORDER BY date) as rn
from database
)
DELETE cte
WHERE rn>1;
uj5u.com熱心網友回復:
只需按前 3 列聚合并取第四列的最大值:
SELECT col1, col2, col3, MAX(date) AS date
FROM yourTable
GROUP BY col1, col2, col3;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/517357.html
標籤:sql服务器重复
上一篇:如何根據另一列值插入值
下一篇:Raiserror未回傳預期值
