DB2 sql语法报错SQLSTATE=42803

DB2 sql语法报错SQLSTATE=42803
刚接触DB2,不太熟悉,修改一句时有点问题,望大神指教...

在xml配置文件里面,有大概这么一句语法,运行起来会报错SQLSTATE=42803

SQL code?1 SELECT    CASE WHEN B.COLUMN_A IS NOT NULL THEN B.COLUMN_B                WHEN K.COLUMN IS NULL THEN 0                WHEN J.COLUMN IS NULL THEN -1 <!--此处加上就会报错 -->                ELSE -2           END COLUMN_B FROM TABLE_A A LEFT JOIN  TABLE_B B ON <!--此处省略关联 --> LEFT JOIN  TABLE_K K ON <!--此处省略关联 --> LEFT JOIN  TABLE_J J ON <!--此处省略关联 --> WHERE <!--此处省略条件 -->


奇怪的是,直接将语句扔到Toad for DB2中执行没有任何问题 ,但是在xml中调用会出错,但删除WHEN J.COLUMN IS NULL THEN 0 这句这运行正常,好像xml中的case when then中不能有三个不同表的意思

另外,使用的是struts1 +ibatis ,有点古老。毕业论文 

加上 case中加上when A.COLUMN IS NULL THEN -2却又能跑起来

谢谢。
这个错比较简单


Java code?1 Caused by: com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-119, SQLSTATE=42803,  DRIVER=3.50.152

其中还有个SQLERRMC="这个值就是J表的那个字段名,不管改成哪个都报错,包括join on后的关联字段"

好像我这里不能用COALESCE ,因为还有几个when then 要做数据的加减,比较大小等,,不单单是作null判定,这里简化写出来只是我不断删掉when then后发现的最少出错语句。

从没想到group by的问题,加上那个xml有96k,我搞懂它的意思都花了不少时间,所以不敢贴出来,就简化写了,没想到简化地有点过了,呵呵

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有