我有一个带外部申请的查询,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
结果集通缉
d1.name|d2.name|d3.name
1 1 1
1 2 2