Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接两个结果集中的列_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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