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