※ 引述《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