在Case表达式中选择子查询时缺少表达式错误

时间:2015-02-11 05:42:20

标签: sql case

我必须编写一个带有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

在执行查询时,我发现错误&#34;缺少表达式&#34;指着第一个案例。我试图弄清楚可能是什么错误,但我无法这样做。我非常感谢你的帮助,因为我还有更多的案例陈述要写,这就是我的工作。

1 个答案:

答案 0 :(得分:0)

表格ABC之间没有任何关系,所以我假设没有关系。并且您希望从表达式中的MCODE表中访问C,以便为此启动另一个子查询,

  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语句将始终返回每个连接行的一个值。如果你不确定你的条件总是会返回单行,你可以删除它。