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