我的任務是從一個非常凌亂的資產串列中識別和洗掉重復的條目。這是一團糟,因為多年來,不同的用戶/開發人員試圖使用替代的唯一標識設定,由于沒有任何主鍵,如果您不注意資料,這些設定會起作用。
我可以使用以下方法找到唯一的行(廣義上):
SELECT DISTINCT
AssetId, AssetNo, PPH, Testdate
FROM dbo.AssetList;
現在我正在嘗試擴展查詢以允許我選擇資料集中的每一列。我認為這會奏效:
SELECT *
FROM dbo.AssetList
WHERE AssetId IN (
SELECT DISTINCT
AssetId, AssetNo, PPH, Testdate
FROM dbo.AssetList
);
但是我錯了。誰能向我解釋如何在 SQL Server 中實作這一目標?
uj5u.com熱心網友回復:
使用Row_Number()
SELECT *
FROM (
SELECT *,
RN=ROW_NUMBER()
OVER (PARTITION BY AssetId, AssetNo, PPH, Testdate, add_more_columns
ORDER BY TestDate --or some other suitable column)
FROM dbo.AssetList
) X
WHERE X.RN > 1 ;
uj5u.com熱心網友回復:
SELECT A.* FROM dbo.AssetList AS A
JOIN
(
SELECT DISTINCT
AssetId, AssetNo, PPH, Testdate
FROM dbo.AssetList
)Q ON A.AssetId =Q.AssetId
不確定您想要達到的目標,但請嘗試以上操作
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/311516.html
標籤:sql sql-server 查询语句 清楚的
上一篇:反轉字串中元素的順序
