Saw*_*Gor 3 sql sql-server sql-server-2005
我有一个包含以下数据的表:
ID CAT TYPE SUBPRODUCT
--- ---- ------ ----------------
1 1 1 AA
2 1 1 BB
3 1 2 CC
Run Code Online (Sandbox Code Playgroud)
我想得到这样的数据:
CAT TYPE SUBPRODUCT
----- ------ ---------------
1 1 AA,BB
1 2 CC
Run Code Online (Sandbox Code Playgroud)
请回复我,我该怎么办.
谢谢.
你可以用FOR XML PATH.虽然有点难以阅读,但它目前是连接字符串最简洁的方法.
分解
FOR XML PATH 连接与subselect匹配的所有值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
Run Code Online (Sandbox Code Playgroud)
测试脚本
;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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |