2017-08-18 15 views

答えて

2

XMLパスの使用

DECLARE @diagnosis TABLE (id INT, diagnosiscode VARCHAR(10)) 
INSERT INTO @diagnosis VALUES 
(1,'D50.9'), 
(1,'M10.9'), 
(1,'Z79.82'), 
(2,'M81.0'), 
(2,'Z85.3'), 
(2,'Z90.710'), 
(3,'M81.0'), 
(3,'Z85.3'), 
(3,'Z17.0') 


SELECT t.id, 
     STUFF((SELECT ', ' + diagnosiscode 
       FROM @diagnosis 
       WHERE id = t.id 
       FOR XML PATH(''),TYPE) 
       .value('.','NVARCHAR(MAX)'),1,2,'') AS alldiagnosiscodes 
    FROM @diagnosis t 
GROUP BY t.id 
ORDER BY t.id 

結果

id alldiagnosiscodes 
1 D50.9, M10.9, Z79.82 
2 M81.0, Z85.3, Z90.710 
3 M81.0, Z85.3, Z17.0 
+0

をお送りいただきありがとうございました正規化見たのは初めてです!もう少し説明できますか?私はこのような答えを見ましたが、私はそのことを理解していません。 – cmpmd2

+0

FOR XML PATHでは、クエリの結果を<>などのXML要素として出力できますが、これは(コンマ)です。 STUFFは1から2までの文字をブランク(1,2、 '')に置き換えます。 –

+0

サンプルを再生します。他の文字で(カンマ)を変更するか、 '<>' + diagnosiscode + ''を使用して何が起こるかを確認してください。 STUFFは空白に(1,2、 '')で定義された最初の2文字を削除します。結果は結果の先頭に '<>'がありません。 –

関連する問題