当前位置: 代码迷 >> Sql Server >> SQL嵌套查询有关问题
  详细解决方案

SQL嵌套查询有关问题

热度:29   发布时间:2016-04-24 10:07:55.0
SQL嵌套查询问题
select s.ckdm,k.ckmc,s.spdm,p.spmc,s.gg1dm,
(case s.gg2dm when '2' then s.sl else 0 end) AS S,
(case s.gg2dm when '3' then s.sl else 0 end) AS M,
(case s.gg2dm when '4' then s.sl else 0 end) AS L,
(case s.gg2dm when '5' then s.sl else 0 end) AS XL,
(case s.gg2dm when '6' then s.sl else 0 end) AS XXL,

(case x.gg2dm when '2' then x.slsl else 0 end) AS S1,
(case x.gg2dm when '3' then x.slsl else 0 end) AS M1,
(case x.gg2dm when '4' then x.slsl else 0 end) AS L1,
(case x.gg2dm when '5' then x.slsl else 0 end) AS XL1,
(case x.gg2dm when '6' then x.slsl else 0 end) AS XXL1
from (select s.ckdm,k.ckmc,s.spdm,p.spmc,s.gg1dm,s.gg2dm,s.sl,x.lssl from spkcb s
left join (select dm1,spdm,gg1dm,gg2dm,sum(sl) lssl from lsxhdmx group by dm1,spdm,gg1dm,gg2dm)x
on s.ckdm=x.dm1 and s.spdm=x.spdm and s.gg1dm=x.gg1dm and s.gg2dm=x.gg2dm
left join shangpin p on s.spdm=p.spdm
left join cangku k on s.ckdm=k.ckdm
where s.ckdm='002' and s.spdm='42S1056' and (s.sl<>0 or x.lssl<>0 or s.sl_2<>0))
 
红色这段代码执行可以了.现在就是转换case提示消息 102,级别 15,状态 1,第 18 行
')' 附近有语法错误。

------解决方案--------------------
select s.ckdm,k.ckmc,s.spdm,p.spmc,s.gg1dm,
 (case s.gg2dm when '2' then s.sl else 0 end) AS S,
 (case s.gg2dm when '3' then s.sl else 0 end) AS M,
 (case s.gg2dm when '4' then s.sl else 0 end) AS L,
 (case s.gg2dm when '5' then s.sl else 0 end) AS XL,
 (case s.gg2dm when '6' then s.sl else 0 end) AS XXL,
 
(case x.gg2dm when '2' then x.slsl else 0 end) AS S1,
 (case x.gg2dm when '3' then x.slsl else 0 end) AS M1,
 (case x.gg2dm when '4' then x.slsl else 0 end) AS L1,
 (case x.gg2dm when '5' then x.slsl else 0 end) AS XL1,
 (case x.gg2dm when '6' then x.slsl else 0 end) AS XXL1
 from (select s.ckdm,k.ckmc,s.spdm,p.spmc,s.gg1dm,s.gg2dm,s.sl,x.lssl from spkcb s
 left join (select dm1,spdm,gg1dm,gg2dm,sum(sl) lssl from lsxhdmx group by dm1,spdm,gg1dm,gg2dm)x
 on s.ckdm=x.dm1 and s.spdm=x.spdm and s.gg1dm=x.gg1dm and s.gg2dm=x.gg2dm
 left join shangpin p on s.spdm=p.spdm
 left join cangku k on s.ckdm=k.ckdm
 where s.ckdm='002' and s.spdm='42S1056' and (s.sl<>0 or x.lssl<>0 or s.sl_2<>0)) as t

------解决方案--------------------
最下面要加别名,但是select哪里要取消别名
  相关解决方案