当前位置: 代码迷 >> Sql Server >> 分景况查询sql
  详细解决方案

分景况查询sql

热度:64   发布时间:2016-04-24 09:44:46.0
分情况查询sql
请教各位大牛:
     现在写一个sql,要涉及4张表,a表,b表,c表,d表。
      a表中的字段  spid 
       b表中的字段  spid   和 contid
      c表中的字段   spid  和contid
      d表中的字段   spid  和contid 
      
    b表算是中间关联的表,因为   c表和 d表的 spid有两种情况:数据为任意值  和 数据为  All ;
大概意思就是要按两种情况查询,如下面sql所表达的,但是我的sql有问题,有没有更好的sql?简短点的。
select  b.contno,a.spid,a.spcname,
  (case when c.SPID ='all'  then   
        (select c.PRICE_DAY from dbusrpub.CONTBD c  where c.contno = b.contno )
       ELSE 
        (select c.PRICE_DAY from dbusrpub.CONTBD c  where c.contno = b.contno and c.spid = b.spid )
       END) PRICE_DAY,
  (case when d.SPID = 'all' then
        (select d.PRICE_MONS from dbusrpub.CONTCYCFEE d where d.contno = b.contno )
       ELSE
        (select d.PRICE_MONS from dbusrpub.CONTCYCFEE d where d.contno = b.contno and d.spid = b.spid )
       END) PRICE_MONS 
 from dbusrpub.CONTMANAFRAME b ,dbusrpub.SHOPLIST a
where b.spid = a.spid 
         
    
------解决思路----------------------
你这个逻辑估计需要用IF ELSE来实现。
  相关解决方案