我必须编写一个带有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;指着第一个案例。我试图弄清楚可能是什么错误,但我无法这样做。我非常感谢你的帮助,因为我还有更多的案例陈述要写,这就是我的工作。
答案 0 :(得分:0)
表格A
,B
和C
之间没有任何关系,所以我假设没有关系。并且您希望从表达式中的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语句将始终返回每个连接行的一个值。如果你不确定你的条件总是会返回单行,你可以删除它。