Как показать строки в виде столбцов - PullRequest
0 голосов
/ 24 мая 2019

Я хочу вернуть данные для отображения строк в виде столбцов, например;

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])

1 Ответ

1 голос
/ 25 мая 2019

К сожалению, до 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
...