簡體   English   中英

在Case表達式中選擇子查詢時缺少表達式錯誤

[英]Missing expression error in Select subquery in Case expression

我必須編寫一個帶有Case表達式的SQL,該表達式連接許多表以檢索2個字段,這將填充另一個表B。

以下是我的一些案例條件:

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

Colum 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

在執行查詢時,我發現指向第一個Case的錯誤“Missing expression”。 我試圖找出可能的錯誤,但無法做到這一點。 非常感謝您的幫助,因為我還有很多案例要寫,這阻礙了我的工作。

ABC之間沒有任何關系,所以我假設沒有關系。 並且您希望從表達式中的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語句將始終返回每個連接行的一個值。 如果沒有,則可以將其刪除,以確保您的條件將始終返回單行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM