我因业务需要,需要将一下的两条sql语句合为一条语句,小弟才疏学浅,不知道该怎么合并,麻烦各位大哥大姐帮帮小弟弟的忙,小弟这里谢谢了先!
定将分送上!谢谢了先!!!
sql语句1:
select x.id,x.fjdid,x.name,case when x.id in(select a.fl from  yw_gdsl a where a.gdzl=3 and a.zxbz=0) then (select sum(decode (a.fl,x.id,1,0)) from yw_gdsl a where a.gdzl=3 and a.zxbz=0 and (substr(a.jtsj,1,8)>=:KSSJ)  and (substr(a.jtsj,1,8)<=:JSSJ))  else 0 end 数量 from gg_dmnr x where x.dmid='TSFL' and  x.fjdid='TSFL'sql语句2:
select x.id,x.fjdid,x.name,case when x.id in(select a.fl from  yw_gdsl a where a.gdzl=3 and a.zxbz=0) then (select sum(decode (a.fl,x.id,1,0)) from yw_gdsl a where a.gdzl=3 and a.zxbz=0 and (substr(a.jtsj,1,8)>=:KSSJ)  and (substr(a.jtsj,1,8)<=:JSSJ) and  nvl(cszs,999)=999 or cszs=0 and sfjj=1) else 0 end 数量
from gg_dmnr x where x.dmid='TSFL' and x.fjdid='TSFL'麻烦给为哥哥姐姐了!!!

解决方案 »

  1.   

    可以这样
    case when ... then... when ... then ... else ... end
      

  2.   

    就是两个查询的记录集简单的和在一起吗?union all就可以了,如果去掉重复记录就用UNION
    select x.id,x.fjdid,x.name,case when x.id in(select a.fl from  yw_gdsl a where a.gdzl=3 and a.zxbz=0) then (select sum(decode (a.fl,x.id,1,0)) from yw_gdsl a where a.gdzl=3 and a.zxbz=0 and (substr(a.jtsj,1,8)>=:KSSJ)  and (substr(a.jtsj,1,8) <=:JSSJ))  else 0 end 数量 from gg_dmnr x where x.dmid='TSFL' and  x.fjdid='TSFL' 
    UNION
    select x.id,x.fjdid,x.name,case when x.id in(select a.fl from  yw_gdsl a where a.gdzl=3 and a.zxbz=0) then (select sum(decode (a.fl,x.id,1,0)) from yw_gdsl a where a.gdzl=3 and a.zxbz=0 and (substr(a.jtsj,1,8)>=:KSSJ)  and (substr(a.jtsj,1,8) <=:JSSJ) and  nvl(cszs,999)=999 or cszs=0 and sfjj=1) else 0 end 数量 
    from gg_dmnr x where x.dmid='TSFL' and x.fjdid='TSFL' 
      

  3.   

    select x.id,x.fjdid,x.name,case when x.id in(select a.fl from  yw_gdsl a where a.gdzl=3 and a.zxbz=0) then (select sum(decode (a.fl,x.id,1,0)) from yw_gdsl a where a.gdzl=3 and a.zxbz=0 and (substr(a.jtsj,1,8)>=:KSSJ)  and (substr(a.jtsj,1,8) <=:JSSJ))  else 0 end 数量 from gg_dmnr x where x.dmid='TSFL' and  x.fjdid='TSFL' 
    UNION all
    select x.id,x.fjdid,x.name,case when x.id in(select a.fl from  yw_gdsl a where a.gdzl=3 and a.zxbz=0) then (select sum(decode (a.fl,x.id,1,0)) from yw_gdsl a where a.gdzl=3 and a.zxbz=0 and (substr(a.jtsj,1,8)>=:KSSJ)  and (substr(a.jtsj,1,8) <=:JSSJ) and  nvl(cszs,999)=999 or cszs=0 and sfjj=1) else 0 end 数量 
    from gg_dmnr x where x.dmid='TSFL' and x.fjdid='TSFL' 
    union all 两个记录集所有记录,union 如果两个记录集有相同的,只显示一条