これまでに取り組んできた次のSQLコードがあります。
DECLARE @Table1 TABLE (ID INT Identity (1,1), Col1 varchar(50), Col2 varchar(50))
INSERT INTO @Table1 (Col1, Col2)
VALUES ('CAN','ABCD'),('CAN','ABCE'),('CAN','MNPP'),('CAN','MNPP'),('EDG','MNPP')
DECLARE @Table2 TABLE (ID INT Identity (1,1), Col2 varchar(50), Col3 varchar(50))
INSERT INTO @Table2 (Col2, Col3)
VALUES ('ABCD','ABC'),('ABCE','ABC'),('MNPP','MNO')
;WITH TEST_CTE AS
(
SELECT T1.ID
, T1.Col1, T1.Col2 AS T1Col2, T2.Col2 AS T2Col2, T2.Col3
, ROW_NUMBER() OVER (PARTITION BY T1.Col1, T2.Col3 ORDER BY T1.ID) AS DuplicateRowNumber
, CASE WHEN COUNT(*) OVER (PARTITION BY T1.Col1, T2.Col3) > 1 THEN 1 ELSE 0 END IsMulitple
FROM @Table1 T1 INNER JOIN @Table2 T2 ON T1.Col2 = T2.Col2
)
SELECT * FROM TEST_CTE
私は得ています
ID Col1 T1Col2 T2Col2 Col3 DuplicateRowNumber IsMulitple
1 CAN ABCD ABCD ABC 1 1
2 CAN ABCE ABCE ABC 2 1
3 CAN MNPP MNPP MNO 1 1
4 CAN MNPP MNPP MNO 2 1
5 EDG MNPP MNPP MNO 1 0
私は期待している
ID Col1 T1Col2 T2Col2 Col3 DuplicateRowNumber IsMulitple
1 CAN ABCD ABCD ABC 1 1
2 CAN ABCE ABCE ABC 2 1
3 CAN MNPP MNPP MNO 1 0
4 CAN MNPP MNPP MNO 1 0
5 EDG MNPP MNPP MNO 1 0
私の目標: T1.Col1 と T2.Col3 の値が同じで T1.Col2 の値が異なる複数のレコードがある場合にのみ、複製をクエリする必要があります。
ありがとうございました
更新: IsMultiple が動作するようになりました。DuplicateRowNumber を把握できません
更新 2: 前回の更新の nvm は、ライブ データではうまく機能しません。