2017-07-12 6 views
1

テーブルのカラムをサブクエリで更新することはできますか?一意の値は[ID][Date]です。これを行うにはどうすればよいですか。これまでのところ私はこのようにそれを試みたが、あなたは持っているフォーマットは、派生テーブルからの更新のために正しくないSQL更新方法サブクエリを条件としたカラム

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] = 

答えて

1

を失敗し、フォーマットは次のようになります。

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 

しかし、場合、私は、一時テーブルを使用することをお勧めしそれは可読性をはるかに容易にするので、可能性です。

関連する問題