3

次のデータを含むテーブルがあります。

ID  CAT  TYPE   SUBPRODUCT
--- ---- ------ ----------------
1   1     1       AA
2   1     1       BB
3   1     2       CC

次のようなデータを取得したいと思います。

CAT   TYPE   SUBPRODUCT
----- ------ ---------------
1     1      AA,BB
1     2      CC

plsは私に何をすべきか答えてください。

ありがとう。

4

1 に答える 1

7

使用できますFOR XML PATH。少し読みにくいですが、現在のところ、文字列を連結する最も簡潔な方法です。

壊す

  • FOR XML PATH副選択に一致するすべての値を連結します
  • STUFF先頭のコンマを削除します

SQL ステートメント

SELECT  q.CAT
        , q.TYPE
        , SUBPRODUCT = STUFF((SELECT ', ' + qi.SUBPRODUCT FROM q qi WHERE qi.Cat = q.Cat AND qi.Type = q.Type FOR XML PATH('')), 1, 2, '')
FROM    q
GROUP BY
        q.CAT
        , q.TYPE

テストスクリプト

;WITH q AS (
  SELECT * FROM (VALUES 
    (1, 1, 1, 'AA')
    , (2, 1, 1, 'BB')
    , (3, 1, 2, 'CC')
  ) AS a (ID, CAT, TYPE, SUBPRODUCT)    
)
SELECT  q.CAT
        , q.TYPE
        , SUBPRODUCT = STUFF((SELECT ', ' + qi.SUBPRODUCT FROM q qi WHERE qi.Cat = q.Cat AND qi.Type = q.Type FOR XML PATH('')), 1, 2, '')
FROM    q
GROUP BY
        q.CAT
        , q.TYPE
于 2012-05-07T07:48:23.517 に答える