一部のフィールド (キー列など) の値が重複しているすべてのレコードを取得したいと考えています。
私のコード:
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' の 2 つの行に対して 1 を持ち、他の行に対しては 0 を 1 回しか表示しないためです。
どうすればそれを達成できますか?(可能であれば、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