作者bbsn (bbsn)
看板Database
标题Re: [SQL ] 有关case when的两个问题
时间Sat May 18 13:49:33 2013
※ 引述《greetmuta (愚零斗武多)》之铭言:
: ※ 引述《bbsn (bbsn)》之铭言:
: : 有关case when的两个问题
: : 问题一:
: : 我现在有3个值,假设是A、B、C
: : 先使用case when来选出A或是B
: : 然後再跟C来比较选出D
: : 不知道这是不是正常的语法
: : 因为写出来的语法是错的
: : 不知道还有没有其他方法?
: : 问题二:
: : 若我有使用case when选出资料并新增一个槛位'值'
: : ex:
: : select case when A.a is null then B.a as 值
: : form A join B on A.z=B.z
: : where 值='XX'
: : 是不是没有办法利用选出来的槛位'值' 来选自己要的资料
: : 再麻烦各位帮忙解答,谢谢~
: : PS.我是用SQL2005的
: --问题一
: select (case when (case when 2>1 then 'A' else 'B' end) ='A' then 'C' else
: 'D' end) as my_column
: --问题二
: select * from test3 where price < (case when 2>1 then 50 else 20 end)
: 希望有帮上你的忙~
有关於问题一,我大致上修改成如下,不过会出来错误
错误:无法系结多重部分 (Multi-Part) 识别码 "B.redate"
select (case when B.redate is null then (case when B.des is null then
A.opdate else B.opdate end) else B.redate end) as opdate
from 资料表A as A join 资料表B as B on A.no=B.no
有关於问题二,我写我想表达的,不过会出来错误,我知道是在where 的那个opdate,不
过没有办法从as新的opdate出来的资料来选吗?
错误:模棱两可的资料行名称 'opdate'
select (case when B.redate is null then (case when B.des is null then
A.opdate else B.opdate end) else B.redate end) as opdate
from 资料表A as A join 资料表B as B on A.no=B.no where opdate='2013/05/05'
再麻烦解答,谢谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.143.230