请教各位大牛:
现在写一个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来实现。