1) I agree Andy's statement.
"It is hard to guess your intent from the SQL code."
It would be better to show sample data and expected result from the sample data.
2) Your subquery may have syntax error.
Quote:
(SELECT COUNT (*) AS NUM, A.Notice_ID
,A.Notice_Client
FROM NOTICES A
WHERE 1=1
AND A.Notice_Client IN (15)
AND A.Notice_Expire_Time > CURRENT TIMESTAMP
AND A.Notice_Create_Time > '2009-10-13-00.00.00.000000'
GROUP BY A.RSK_ASMT_TRK_ID, A.RSK_IND_ID
ORDER BY NUM DESC
) AS B
|
A.Notice_ID and A.Notice_Client are not in grouping column.
So, aggregate function(for example MAX) is neccesary.
Anyway, here is a query based on my guess at your intent...
Code:
UPDATE NOTICES C
SET C.Notice_Expire_Time = CURRENT TIMESTAMP
WHERE C.Notice_Client IN (15)
AND C.Notice_Expire_Time > CURRENT TIMESTAMP
AND EXISTS
(SELECT A.RSK_ASMT_TRK_ID
, A.RSK_IND_ID
FROM NOTICES A
WHERE A.Notice_Client = C.Notice_Client
AND A.Notice_ID = C.Notice_ID
AND A.Notice_Expire_Time > CURRENT TIMESTAMP
AND A.Notice_Create_Time > '2009-10-13-00.00.00.000000'
GROUP BY
A.RSK_ASMT_TRK_ID
, A.RSK_IND_ID
HAVING COUNT (*) > 1
)
AND C.RSK_Notice_Create_Time
=
(SELECT MAX(D.Notice_Create_Time)
FROM NOTICES D
WHERE D.Notice_Client = C.Notice_Client
AND D.Notice_ID = C.Notice_ID
)
;