我創建了一條 SQL 陳述句來檢查表中的重復記錄。如果表沒有重復記錄,則計數應回傳零。實際結果是計數回傳空
SELECT COUNT(1) MY_ID_dup_count
FROM mytable
GROUP BY MY_ID
HAVING COUNT(1) >1
預期結果:MY_ID_dup_count 0
實際結果:MY_ID_dup_count
MS SQL 版本:Microsoft SQL Server 2017 - 14.0.3381.3 (X64)
uj5u.com熱心網友回復:
每 2 個或更多的 MY_ID 組回傳 1 條記錄。如果您想要 MY_ID 的計數而不是所有組的重復記錄計數,您現在想要計算這些。這兩者都很重要。
SELECT COUNT(*) as [GROUPS_COUNT], SUM(k.[MY_ID_COUNT]) as [RECORDS_COUNT]
FROM (
SELECT MY_ID, COUNT(*) as [MY_ID_COUNT]
FROM mytable
GROUP BY MY_ID
HAVING COUNT(*) > 1
) k
PS 如果在沒有要求和的記錄時需要 0,則使用 ISNULL 包裝 SUM。(不記得是否需要這個。)
uj5u.com熱心網友回復:
類似以下的事情發生在我身上:
計算沒有'有'的值,然后用你需要的條件來計算它們
SELECT COUNT(v.MY_ID_dup_count)
FROM(
SELECT COUNT(1) MY_ID_dup_count
FROM mytable
GROUP BY MY_ID
--HAVING COUNT(1) >1
)V
where v.MY_ID_dup_count > 1
uj5u.com熱心網友回復:
您正在談論對重復檢查的結果進行后處理。你可以這樣做:
DROP TABLE IF EXISTS #Duplicates;
SELECT MY_ID_dup_count = COUNT(1)
INTO #Duplicates
FROM mytable
GROUP BY MY_ID
HAVING COUNT(1) > 1;
IF @@ROWCOUNT = 0
SELECT MY_ID_dup_count = 0;
ELSE
SELECT * FROM #Duplicates;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/467822.html
上一篇:在2個字串之間查找文本
