一个或两个SQL case语句

时间:2013-04-23 19:24:51

标签: sql case

我有一个SELECT语句,可以提取这两个不同的产品条。当我从网站上删除其中一个并重新运行我的语句时,我仍然有两行,第一列有ARMCODE两次(两个结果),第二列有第一列的描述,但后面没有描述第二个(因为它已被删除)。

问题是它仍在SQL Studio中使用ARMCODE显示两个结果。

如果有a.CODE_a.strips,则需要显示,如果需要显示A.ARMCODEB.DESCRIPTION。如果只有A.ARMCODEB.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'

Strips and description, two different products, same patient

When i delete strips, still showing two results with empty description

my case statement returning nothing

我开始使用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 案例陈述

1 个答案:

答案 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