を見つけるためconcat_names:
WITH Src AS
(
SELECT * FROM (VALUES
(101, 'Tom', 'Dick', 'Harry'),
(102, 'Jack', 'Martin', 'Anna'),
(103, 'Harry', 'Tom', 'Dick'),
(104, 'Dick', 'Tom', 'Harry'),
(105, 'Anna', 'Martin', 'Jack'),
(106, 'Anna', 'Martin', 'Joe')
) T(ID, Player1, Player2, Player3)
), Numbered AS
(
SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name) N
FROM
(
SELECT ID,
CONVERT(nvarchar(MAX), Player1) Player1,
CONVERT(nvarchar(MAX), Player2) Player2,
CONVERT(nvarchar(MAX), Player3) Player3
FROM Src
) T1
UNPIVOT
(Name FOR Player IN (Player1, Player2, Player3)) PV
), Grouped AS
(
SELECT N1.ID, N2.ID DuplicateID
FROM Numbered N1
CROSS JOIN Numbered N2
GROUP BY N1.ID,N2.ID
HAVING SUM(CASE WHEN N1.N=N2.N AND N1.ID!=N2.ID AND N1.Name=N2.Name THEN 1 END)=MAX(N1.N)
)
SELECT *
FROM Grouped
WHERE ID<DuplicateID
こんにちはショーン、 複数の重複を識別するために、どのようにコードを変更することができますか? 8行があるとします。 101,102,104は重複している。 105と108は重複しています。独特な休息。 と出力を複製するように3つを指定し、他の2つを複製するようにしたい –
必要なものの例を挙げることはできますか? –
ありがとうございます ID |プレーヤー1 |プレーヤー2 | Player3 ============= 101 |トム|ディック|ハリー: 102 |ジャック|マーティン|アンナ 103 |ハリー|トム|ディック 104 |ディック|トム|ハリー 105 |ディーン| Zoya |マーク 106 |アンナ|ジャック| Martin 107 |リリー|ジェームス|パトリック 出力を与える何か 101,103,104は重複しています と 102,106は重複しています –