2015-02-11 98 views
0

我必須寫與CASE表達式聯合許多表的一個SQL檢索2場,這將填充另一個表B.缺少表達錯誤案例表達

下面是我的一些情況的條件:

CASE 
    A_FLG = 'Y' and Mod code = 'P' and Year(T_DT) < 2011 
    set GRP_ID = 2 

科拉姆TDR_DT從其他表C.衍生我編譯SQL如下:

Select 
      case 
      when A.A_FLG = 'Y' and C.MCODE ='P' 
      and (
        select extract(year from C.T_DT) from Table C where 
        extract(year from C.T_DT) 
       )<2010 
      then '2'  
      else '-1'         
    END "GRP_ID", 
    from Table A 
    join Table F 
    on A.ID=F.ID 

在執行查詢,我發現錯誤「缺少表達式」點在第一個案例。我試圖找出可能的錯誤,但無法這樣做。任何幫助都深表感謝,因爲我有更多的案例陳述書寫,這是阻礙我的工作。

+0

來自同一張表的C.MCODE和C.T_DT? – 2015-02-11 05:46:45

+0

表A,表B與表C有關嗎? – 2015-02-11 05:51:59

+0

你的'C'在哪裏?你不是從外部查詢中的'C'中選擇的,以防萬一時如何訪問'C.MCODE'? – 2015-02-11 05:52:06

回答

0

A,BC之間沒有任何關係,所以我假設沒有關係。你想從C表訪問MCODE在表達這樣你就可以火起來的另一個子查詢的是,

Select 
     case when A.A_FLG = 'Y' 
       and (Select TOP 1 C.MCODE from tablec C Where yourcondition =value) ='P' 
       and (select extract(year from C.T_DT) from Table C where extract(year from C.T_DT))<2010 
        then '2'  
      else '-1'         
     END "GRP_ID", 
    from Table A 
     join Table F 
     on A.ID=F.ID 

我選擇Top 1,因爲你需要確保在SELECT語句將總是返回一個每個連接行的值。如果你不確定你的條件總是返回單行,你可以刪除它。