2010-09-24 60 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 ...) ,

括號可能足以讓編譯器在分配值之前很好地將子查詢組合在一起。

如果您可以創建視圖,我通常會發現使用所有計算的字段定義視圖更容易,然後儘可能簡單地更新本身。分離使得更容易找出真正的問題所在。