2016-08-22 3 views
-1

別のテーブルから取得しているCSV値からテーブルを更新しようとしています。このCSV値は、#Formテーブルの変数に基づいて作成したサブクエリの出力です。今私は再び#Formテーブルを更新したいと私はカーソルを使用したくない。 #Formテーブルを正しく更新できません。同じテーブルを更新する際の問題

以下は私が使用しているコードです。

Update f 
SET AuditorComment = (
    Select @Comment = @Comment+', '+a.Value 
    FROM #Form fd 
    LEFT JOIN AuditData a on (fd.FormID=a.objectID and a.ObjectTypeID=12) 
    WHERE [email protected] AND [email protected] AND f.FormID = fd.FormID 
    ) 
From #Form f 

私が間違っているところで助けてください。

+0

問題を説明してください。 – Blorgbeard

+0

@Blorgbeard私は更新の質問をしています。コメントありがとう –

答えて

2

これはそのようには機能しません。 for xml pathまたは同様の方法を使用する必要があります。

update f 
    set AuditorComment = stuff((select ', ' + ad.value 
           from formdata fd join 
            AuditData ad 
            on fd.FormID = ad.objectID and ad.ObjectTypeID = 12 
           where FORM_OID = @frmOID and 
             SubjectID = @subjectId and 
             f.FormID = fd.FormID 
           for xml path ('') 
           ), 1, 2, '') 
    From #Form f; 
+0

選択は複数の行を与えているため、エラーが発生しています。サブクエリは1つ以上の値を返しました。 CSVを使用していますが、複数の行をCSVレコード –

+0

に変換しようとしました.F.FormID = fd.FormIDの後にFOR XML PATH( '')を追加しませんでした。これを追加した後に機能しました。ありがとう.. !! –

+0

@NimbleFungus。 。 。また、 'stuff()'の最後の3つの引数として '1,2、 '')'を使いたいので、カンマとピリオドの両方を取り除くことができます。 –

関連する問題