繁体   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