表AでのSQL Serverで2つのテーブルを結合する方法:一つの共通の列ではなくノー冗長データ
id members
____________
1 a
2 b
3 c
4 c
4 d
5 e
表B
id countries
_____________
1 us
1 europe
1 australia
3 india
3 china
4 australia
4 canada
5 mexico
結果は
id members countries
___________________________
1 a us
1 europe
1 australia
2 b
3 c india
3 china
4 c australia
4 d cananda
5 e mexico
のようになります。間違った場所で編集しているとすみませます。
@Martinご返信ありがとうございます。それは2つのテーブルに最適です。しかし、実際に私は、私はこの
;WITH A AS
(SELECT id, members,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY members) AS RN FROM @A),
B AS
(SELECT id, countries,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY countries) AS RN FROM @B),
C AS
(SELECT id,PRIME_MEM,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY PRIME_MEM) AS RN FROM @C)
SELECT COALESCE(A.id,B.id,C.ID) AS id, A.members, B.countries,C.PRIME_MEM
FROM A FULL OUTER JOIN B on A.id = B.id AND A.RN=B.RN
FULL OUTER JOIN C ON A.ID =C.ID AND C.RN = A.RN
のようなクエリを試してみました。2.私は
id members countries prime_mem
___________________________________________
1 a us p1
1 europe p2
1 australia
2 b
3 c india
3 china
4 c australia
4 d cananda
5 e mexico
ように見える結果を必要とするのは、私は別のテーブルC
id prime_members
---------------------
1 p1
1 p2
を持っていると言うよりも多くを結合しようとしています
その後、私はこのようになりました:
id members countries prime_mem
___________________________________________
1 a us p1
1 europe
1 australia
1 p2
2 b
3 c india
3 china
4 c australia
4 d cananda
5 mexico
A.RNには1行しかないので、RN>1
が含まれていないため、C.RN=B.RN
は正しい出力を示しています。ここでは3つのテーブルと数行しかないので簡単です。しかし、リアルタイムでこの問題を見つけて解決する方法。また、表Aは参照表であり、すなわち表BおよびCのIDの値は表Aに示されている。
何か助けに感謝します。おかげさまで