如何使用 GROUP BY 在 SQL Server 中连接字符串?

新手上路,请多包涵

如何得到:

 id       Name       Value
1          A          4
1          B          8
2          C          9

id          Column
1          A:4, B:8
2          C:9

原文由 Eldila 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 908
2 个回答

不需要 CURSOR、WHILE 循环或用户定义的函数

只需要对 FOR XML 和 PATH 进行创意。

[注意:此解决方案仅适用于 SQL 2005 及更高版本。原始问题未指定使用的版本。]

 CREATE TABLE #YourTable ([ID] INT, [Name] CHAR(1), [Value] INT)

INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'A',4)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'B',8)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9)

SELECT
  [ID],
  STUFF((
    SELECT ', ' + [Name] + ':' + CAST([Value] AS VARCHAR(MAX))
    FROM #YourTable
    WHERE (ID = Results.ID)
    FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
  ,1,2,'') AS NameValues
FROM #YourTable Results
GROUP BY ID

DROP TABLE #YourTable

原文由 Kevin Fairchild 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于我所有的医疗保健人员:


SELECT
s.NOTE_ID
,STUFF ((
        SELECT
           [note_text] + ' '
        FROM
            HNO_NOTE_TEXT s1
        WHERE
            (s1.NOTE_ID = s.NOTE_ID)
        ORDER BY [line] ASC
         FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
         ,
        1,
        2,
        '') AS NOTE_TEXT_CONCATINATED
FROM
    HNO_NOTE_TEXT s
    GROUP BY NOTE_ID


原文由 Aus_10 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进