2010-09-24 57 views
0

嗨,我是一个具有与下面的查询中使用最多的语句有问题我工作问题在下面的更新语句

UPDATE TB_TS_CM_OFIRECPT SET AMT = (COALESCE (ABS(CMLEDG.TRANAMT), 0) + 
COALESCE (ABS(CMLEDG_1.TRANAMT), 0)) * - 1, TRANAMT = ABS(CMLEDG.TRANAMT) *-1, 
RTAXAMT = COALESCE (ABS(CMLEDG_1.TRANAMT) * - 1, 0), 
TRANID = CMLEDG.TRANID FROM TB_TS_CM_OFIRECPT INNER JOIN CMLEDG 
ON TB_TS_CM_OFIRECPT.TRANID = CMLEDG.REFNMBR 
AND TB_TS_CM_OFIRECPT.DESCRPTN = CMLEDG.DESCRPTN LEFT OUTER JOIN 
CMLEDG AS CMLEDG_1 ON CMLEDG.TRANID = CMLEDG_1.PARENTTRANID 
AND CMLEDG.DESCRPTN = CMLEDG_1.DESCRPTN WHERE (TB_TS_CM_OFIRECPT.IMPID = '195') 
AND (TB_TS_CM_OFIRECPT.ACTION = 'REVERSED') 

TRANID = CMLEDG.TRANID FROM TB_TS_CM_OFIRECPT INNER JOIN CMLEDG - This particualr line 

should actually be something like TRANID = SELECT MAX(TRANID) FROM .... 

但是我kerep得到一个语法错误使用最多。 欣赏上你的帮助

问候,

ABHI

回答

1

不能完全确定,但尝试:

tranID =(SELECT MAX(tranID)... FROM ... INNER JOIN ...) ,

括号可能足以让编译器在分配值之前很好地将子查询组合在一起。

如果您可以创建视图,我通常会发现使用所有计算的字段定义视图更容易,然后尽可能简单地更新本身。分离使得更容易找出真正的问题所在。