在以下更新语句中使用max的问题

时间:2010-09-24 06:25:48

标签: tsql

您好我在以下查询中使用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

1 个答案:

答案 0 :(得分:1)

不完全确定,但请尝试:

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

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

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