将SQL Server表展平为字符串

SWe*_*eko 2 sql sql-server

我有一张桌子:

ID  | Value
----------------
 1  | One
 2  | Two
 3  | Three
Run Code Online (Sandbox Code Playgroud)

我需要做的是从这些值创建一个字符串,格式如下:

'1: One, 2: Two, 3: Three'
Run Code Online (Sandbox Code Playgroud)

我知道如何使用游标执行此操作,但它将在视图中用作列,因此它不是真正的高性能选项.有什么指针吗?

Mar*_*ith 5

WITH T(ID,Value) AS
(
SELECT 1, 'One' UNION ALL
SELECT 2, 'Two' UNION ALL
SELECT 3, 'Three' 
)

SELECT  STUFF(
        (SELECT ', ' + CAST(ID as varchar(11)) + ': ' + Value
         FROM T
         FOR XML PATH (''))
     , 1, 2, '')
Run Code Online (Sandbox Code Playgroud)


Adr*_*der 5

看看类似的东西

DECLARE @Table TABLE(
        ID INT,
        Value VARCHAR(20)
)
INSERT INTO @Table SELECT 1,'One'
INSERT INTO @Table SELECT 2,'Two'
INSERT INTO @Table SELECT 3,'Three'

SELECT  STUFF(
                (
                    SELECT  ', ' + CAST(ID AS VARCHAR(MAX)) + ': ' + Value
                    FROM    @Table
                    FOR XML PATH(''), TYPE 
               ).value('.','varchar(max)') 
               ,1,2, '' 
          )
Run Code Online (Sandbox Code Playgroud)