私はSortOrderとDiagnosisCodesを持つテーブルを持っています。SQL Server 2012の列を単一行に区切ってカンマで区切る
IはSortOrdersのそれぞれ異なるセットについて1行のDiagnosisCodesを参照する必要があります。
私はSortOrderとDiagnosisCodesを持つテーブルを持っています。SQL Server 2012の列を単一行に区切ってカンマで区切る
IはSortOrdersのそれぞれ異なるセットについて1行のDiagnosisCodesを参照する必要があります。
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
をお送りいただきありがとうございました正規化見たのは初めてです!もう少し説明できますか?私はこのような答えを見ましたが、私はそのことを理解していません。 – cmpmd2
FOR XML PATHでは、クエリの結果を<>>などのXML要素として出力できますが、これは(コンマ)です。 STUFFは1から2までの文字をブランク(1,2、 '')に置き換えます。 –
サンプルを再生します。他の文字で(カンマ)を変更するか、 '<>' + diagnosiscode + '>'を使用して何が起こるかを確認してください。 STUFFは空白に(1,2、 '')で定義された最初の2文字を削除します。結果は結果の先頭に '<>'がありません。 –
これは、私はICDコードは – scsimon