日期:2014-05-18  浏览次数:20868 次

关于有left join 中使用 case 语句的问题
如,现有两表   A表(ID,TYPEID,NAME),B表(TYPEID,TYPENAME,YC)
我写了一语句如下,
  select   a.*,b.typename=case   b.yc   when   0   then   b.typename   else   '隐藏 '   end
  from   A   a   left   join   B   b   on   a.typeid=b.typeid

不明白的是为什么两表做   join时为什么case   语句会报错.有什么解决办法??

------解决方案--------------------
select a.*,b.typename=case b.yc when 0 then b.typename else '隐藏 ' end
--b.typename应该是case when后列的别名,因此要将b.typename加单引号或改为你想要的列名
select a.*, '列名 '=case b.yc when 0 then b.typename else '隐藏 ' end

from A a left join B b on a.typeid=b.typeid
------解决方案--------------------
--把b.typename=改為typename=
select a.*, typename=case b.yc when 0 then b.typename else '隐藏 ' end
from A a left join B b on a.typeid=b.typeid