Reputation: 867
Is it possible to update my a column in my table via subquery? the unique value is [ID]
and [Date]
How can I do this. So far I tried it like this but failed
UPDATE [dbo].[SCPL_EOD]
SET [CSP] = (SELECT
D.CSP FROM
(
SELECT PDT.CallID,SCP.*
,ROW_NUMBER() OVER(PARTITION BY SCP.[MIN],[ACCOUNT_NUMBER] ORDER BY SCP.[DATE_TIME] DESC) as [Row] FROM
(
SELECT *
FROM [SCPL].[dbo].[SCPL_EOD]
WHERE [SWITCH_RESULT] = 'ANSWERED'
AND [Date] BETWEEN @DateFrom AND @DateTo
) SCP
LEFT JOIN
(
SELECT
SUBSTRING([MIN],2,LEN([MIN])) as [MIN]
,CallID
,[Date]
,ROW_NUMBER() OVER(PARTITION BY [MIN],[PDcampaignBatch] ORDER BY PDTransaction.[SubmittedDateTime] DESC) as [Row]
FROM [Telemarketing].[dbo].[PDTransaction]
WHERE [Date] BETWEEN @DateFrom AND @DateTo
) PDT ON SCP.[MIN] = PDT.MIN AND SCP.[Date] = PDT.[DATE] AND PDT.[Row] = 1
)a
LEFT JOIN [Telemarketing].[dbo].[Disposition] d ON a.CallID = d.[Call ID]
WHERE a.[Row] = 1
) a
WHERE [MIN] =
Upvotes: 1
Views: 52
Reputation: 1038
The format you have is not correct for updating from a derived table, the format would be:
UPDATE A
SET A.Value = B.Value
FROM Table_A AS A
INNER JOIN
(
SELECT B.ID ,
B.Value
FROM Table_B AS B
) AS B ON B.ID = A.ID
WHERE A.ID = 1
But I would suggest using temp tables if that is a possibility, as it makes readability much easier.
Upvotes: 1