Объединить столбцы из двух наборов результатов - PullRequest
0 голосов
/ 24 июня 2011

у меня есть стол group

CREATE TABLE
GROUP (id , HOST , participant)

INSERT INTO GROUP(id, HOST, participant)
VALUES (1, 1000, 2000)

INSERT INTO GROUP (id, HOST, participant)
VALUES (1, 1000, 2000)

customer стол

insert into customer( custmerid, customername, alias) values (1000,'abccorp', 'abc')
insert into customer( custmerid, customername, alias) values (2000,'bcacorp', 'bca')
insert into customer( custmerid, customername, alias) values (3000,'lcacorp', 'lca')

Теперь я хочу написать представление, чтобы получить

groupID, host participation
1 abccorp bcacorp
2 abccorp null
3 null lcacorp

Как я могу получить это? Я вижу, что для организации необходимы два объединения. Но как я могу получить это ??

Спасибо.

1 Ответ

0 голосов
/ 24 июня 2011

Если я не понял вашего вопроса, следующее утверждение вернет вам требуемые результаты.

Я использую следующие предположения

  • Host отображается на custmerid
  • Participant отображается на custmerid
  • Введенные вами данные являются неполными

Обратите внимание, что если custmerid не является орфографической ошибкой в ​​вашем вопросе, я бы посоветовал вам полностью изложить ее как customerid

Оператор SQL

SELECT  groupid = g.id
        , host = chost.customername
        , participation = cparticipant.customername     
FROM    [Group] g
        LEFT OUTER JOIN Customer chost ON chost.custmerid = g.Host
        LEFT OUTER JOIN Customer cparticipant ON cparticipant.custmerid = g.Participant

Данные испытаний

;WITH [Group](ID, Host, Participant) AS (
    SELECT 1, 1000, 2000
    UNION ALL SELECT 2, 1000, NULL
    UNION ALL SELECT 3, NULL, 3000
)
, Customer (custmerid, customername, alias) AS (
    SELECT 1000, 'abccorp', 'abc'
    UNION ALL SELECT 2000, 'bcacorp', 'bca'
    UNION ALL SELECT 3000, 'lcacorp', 'lca'
)
SELECT  groupid = g.id
        , host = chost.customername
        , participation = cparticipant.customername     
FROM    [Group] g
        LEFT OUTER JOIN Customer chost ON chost.custmerid = g.Host
        LEFT OUTER JOIN Customer cparticipant ON cparticipant.custmerid = g.Participant

выход

groupid     host    participation
----------- ------- -------------
1           abccorp bcacorp
2           abccorp NULL
3           NULL    lcacorp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...