Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 2012 - Fatal编程技术网

Sql 将外部应用结果作为新行返回

Sql 将外部应用结果作为新行返回,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有一个带有外部apply的查询,90%的时间将返回null。然而,对于另外10%的时间,我想将其作为另一行返回。我当时正在讨论作为一个工会来做这件事,但我很好奇是否可以用其他方式来处理 Select d1.name ,d2.name ,d3.name ,b.name2 ,b.name3 from database1 d1 inner join database2 d2 on d1.d2_id = d2.id inner join database3 d3 on d2.d3_id = d3.i

我有一个带有外部apply的查询,90%的时间将返回null。然而,对于另外10%的时间,我想将其作为另一行返回。我当时正在讨论作为一个工会来做这件事,但我很好奇是否可以用其他方式来处理

Select d1.name
,d2.name
,d3.name
,b.name2
,b.name3

from database1 d1
inner join database2 d2 on d1.d2_id = d2.id
inner join database3 d3 on d2.d3_id = d3.id

outer apply(select d2a.name2
            ,d3.name3

            from database1 d1a
            inner join database2 d2a on d1a.d2a_id = d2a.id
            inner join database3 d3a on d2a.d3a_id = d3a.id
            where 1=1
            and d1a.id = d1.id
            and (d2a.name<>d2.name and d3a.name <> d3.name)
            )b

where 1=1


Result set now
d1.name|d2.name|d3.name|b.name2|b.name3
1          1        1       2      2 

b.name2和3发生了什么事?他们被撞到了新的一行,并作为专栏被删除了,我认为他们只是使用了联合。。。
d1.name|d2.name|d3.name
1          1       1
1          2       2