Таблица A:
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 столах.Но на самом деле я пытаюсь объединить более 2. Допустим, у меня есть другая таблица C
id prime_members
---------------------
1 p1
1 p2
Мне нужен результат, чтобы выглядеть как
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
, поэтому я попробовал запрос, как этот
;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
тогда я получил такой результат:
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
Я понял, что C.RN=B.RN
дает правильный вывод, потому что A.RN не имеет RN>1
каку него только 1 ряд.Здесь это легко, потому что только 3 таблицы и несколько строк.Но в режиме реального времени как выяснить и решить эту проблему.Также таблица A является справочной таблицей, то есть значения для ID в таблицах B и C будут присутствовать в таблице A.
Любая помощь приветствуется.Спасибо.