Tsql 如何将行显示为列

Tsql 如何将行显示为列,tsql,pivot,Tsql,Pivot,例如,我想返回数据以将行显示为列 ref, description 123, bananas, apples, oranges etc 可能有多个描述项 表中的列表显示在表行中 ref, description 123, bananas 123, apples 123, oranges 任何想法/代码都值得赞赏 这是我创建的CTE,但我很高兴探索其他强大的解决方案 with PivotV as ( SELECT [CO-PERSON-VULNERABILITY].perso

例如,我想返回数据以将行显示为列

ref, description
123, bananas, apples, oranges etc
可能有多个描述项

表中的列表显示在表行中

ref, description
123, bananas
123, apples
123, oranges
任何想法/代码都值得赞赏

这是我创建的CTE,但我很高兴探索其他强大的解决方案

with PivotV as (


SELECT        [CO-PERSON-VULNERABILITY].person_ref [Ref], 
(case 
when [CO_VULNERABLE-CODES].DESCRIPTION = 'Restricted Mobility' then 'RM'
when [CO_VULNERABLE-CODES].DESCRIPTION = 'Progressive or Long Term Illness' then 'PLTI'
when [CO_VULNERABLE-CODES].DESCRIPTION = 'ASB / Injunction Order' then 'AIO'
when [CO_VULNERABLE-CODES].DESCRIPTION = 'Beware possible Drug Paraphernalia' then 'BPDP'
when [CO_VULNERABLE-CODES].DESCRIPTION = '[Can''t] Manage Stairs' then 'CMS'


else NULL end) as [VunDesc]
--,[CO-PERSON-VULNERABILITY].vulnerable_code, [CO_VULNERABLE-CODES].[VULNERABLE-IND], 

FROM            [CO-PERSON-VULNERABILITY] INNER JOIN
                         [CO_VULNERABLE-CODES] ON [CO-PERSON-VULNERABILITY].vulnerable_code = [CO_VULNERABLE-CODES].[VULNERABLE-IND])

不幸的是,在
SQL Server 2017
(您可以在这里使用
STRING_AGG()
)之前,想要做什么并不容易

SELECT t1.ref
     , STUFF((
       SELECT ',' + t2.description
         FROM #t as t2
        WHERE t2.ref = t1.ref
        ORDER BY t2.description
          FOR XML PATH('')), 1, LEN(','), '') as description
  FROM #t as t1
 GROUP BY t1.ref

请发布您的数据,以及您已经尝试过的内容。您正在使用的数据库和版本是什么?SQL server 2016Hanks-非常有效