看板 Database 關於我們 聯絡資訊
※ 引述《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