我有一个SELECT
语句,可以提取这两个不同的产品条。当我从网站上删除其中一个并重新运行我的语句时,我仍然有两行,第一列有ARMCODE
两次(两个结果),第二列有第一列的描述,但后面没有描述第二个(因为它已被删除)。
问题是它仍在SQL Studio中使用ARMCODE
显示两个结果。
如果有a.CODE_
,a.strips
,则需要显示,如果需要显示A.ARMCODE
和B.DESCRIPTION
。如果只有A.ARMCODE
和B.DESCRIPTION
而另一个已被删除,为什么它仍会显示两个结果,a.CODE_
是第二个结果,而空的a.strips。
select a.ARMCODE,
b.DESCRIPTION_
from ARE.AAS.REORDER a
left outer join ARE.AAS.PTDME b on a.PTCODE=b.CODE_
where a.ARMCODE = 'ADSMANZS03'
and b.MEDICAREID ='A4253'
union all
select a.CODE_,a.strips
from event.dbo.intake a
where a.CODE_ = 'ADSMANZS03'
我开始使用case的新语句,现在使用一些嵌套连接:
select case when b.ARMCODE is null then a.strips
end
from (select *
from ev.dbo.intake a
where a.CODE_ = 'ADSMANZS03') a
left outer join(select a.ARMCODE,
b.DESCRIPTION_
from ARE.AAS.REORDER a
left outer join ARE.AAS.PTDME b on a.PTCODE=b.CODE_
where a.ARMCODE = 'ADSMANZS03'
and b.MEDICAREID ='A4253') b on a.CODE_=b.ARMCODE
我没有得到任何行或列,而是返回(没有列名)和NULL
希望不要太困惑。提前谢谢。
图片1 条带和描述,两种不同的产品,同一患者
图片2 当我删除条带时,仍显示两条空描述的结果,不应显示第二个结果。
图片3 案例陈述
答案 0 :(得分:0)
只是一个假,所以这个问题可以关闭。我用coalesce来确定我需要的东西。
select
coalesce(b.DESCRIPTION_,a.strips)
from(
select
*
from ev.dbo.intake a
where a.CODE_ = 'ADSMANZS03'
)a
left outer join(
select
a.ARMCODE,
b.DESCRIPTION_
from ARE.AAS.REORDER a
left outer join ARE.AAS.PTDME b on a.PTCODE=b.CODE_
where a.ARMCODE = 'ADSMANZS03'
and b.MEDICAREID ='A4253'
)b on a.CODE_=b.ARMCODE
COALESCE(Transact-SQL) http://msdn.microsoft.com/en-us/library/ms190349.aspx