我想获取对某些字段(即键列)具有重复值的所有记录。
我的代码:
CREATE TABLE #TEMP (ID int, Descp varchar(5), Extra varchar(6))
INSERT INTO #Temp
SELECT 1,'One','Extra1'
UNION ALL
SELECT 2,'Two','Extra2'
UNION ALL
SELECT 3,'Three','Extra3'
UNION ALL
SELECT 1,'One','Extra4'
SELECT ID, Descp, Extra FROM #TEMP
;WITH Temp_CTE AS
(SELECT *
, ROW_NUMBER() OVER (PARTITION BY ID, Descp ORDER BY (SELECT 0))
AS DuplicateRowNumber
FROM #TEMP
)
SELECT * FROM Temp_cte
DROP TABLE #TEMP
最后一列根据 ID 和 Descp 值告诉我每行出现了多少次。我想要那一行,但我还需要另一列*,它指示 ID = 1 和 Descp = 'One' 的两行都出现了不止一次。
所以一个额外的列*(即 MultipleOccurances (bool))对于 ID = 1 和 Descp = 'One' 的两行有 1,对于其他行有 0,因为它们只显示一次。
我怎样才能做到这一点?(如果可能,我想避免使用 Count(1)>1 或其他东西。
编辑:
期望的输出:
ID Descp Extra DuplicateRowNumber IsMultiple
1 One Extra1 1 1
1 One Extra4 2 1
2 Two Extra2 1 0
3 Three Extra3 1 0