Sql 连接两个结果集中的列
我有一个小组 客户表 现在我想写一个视图来获取Sql 连接两个结果集中的列,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个小组 客户表 现在我想写一个视图来获取 groupID, host participation 1 abccorp bcacorp 2 abccorp null 3 null lcacorp 我怎么能得到这个?我认为该组织需要两个联合体。但是我怎样才能得到它 谢谢。如果我没有误解您的问题,下面的声明将返回您需要的结果 我使用以下假设 主机已映射到customerid 参与者被映射到custerId 您提供的输入数据不完整 请注意,如果您的问题中的customerid不是拼写错误,我建议
groupID, host participation
1 abccorp bcacorp
2 abccorp null
3 null lcacorp
我怎么能得到这个?我认为该组织需要两个联合体。但是我怎样才能得到它
谢谢。如果我没有误解您的问题,下面的声明将返回您需要的结果 我使用以下假设 主机已映射到customerid 参与者被映射到custerId 您提供的输入数据不完整 请注意,如果您的问题中的customerid不是拼写错误,我建议您将其完全拼写为customerid SQL语句 测试数据 输出
我觉得你的演示值有点不对劲。如何获得GroupID2和GroupID3,因为它们不在您的示例中。您对[GROUP]表的定义无效,缺少数据类型,并且似乎重复输入了相同的2行数据。最后,组织/客户如何与[集团]联系客户和集团如何联系??没有基于同名列的明显连接。。。。。你需要再解释一下!!
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
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