您好我在以下查询中使用max语句时遇到问题我正在处理
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 ....
然而,我发现语法错误。 感谢你的帮助
此致
ABHI
答案 0 :(得分:1)
不完全确定,但请尝试:
tranID =(SELECT MAX(tranID)... FROM ... INNER JOIN ...),
括号可能足以让编译器在分配值之前很好地将子查询分组。
如果您可以创建视图,我通常会发现使用所有计算字段定义视图要容易得多,然后让更新本身尽可能简单。分离使得更容易找出真正的问题所在。