【发布时间】:2019-05-10 12:54:03
【问题描述】:
我正在尝试将一组行转换为多列。
到目前为止,我已经能够使用 for xml 路径将一组行聚合到一个列中,但我需要将更多数据保存到更多列中。
CntTyp 表(联系人类型)
| ContactID | CatCode | CatDesc |
|-----------|---------|---------|
| 89 | 26 | OA |
| 89 | 27 | OA2 |
| 90 | 26 | OA |
| 91 | 26 | OA |
| 91 | 1625 | Donor |
| 91 | 1625 | Player |
期望的输出
| ContactID | CatCode | CatDesc | CatCode | CatDesc | CatCode | CatDesc |
|-----------|---------|---------|---------|---------|---------|---------|
| 89 | 26 | OA | 27 | OA2 | | |
| 90 | 26 | OA | | | | |
| 91 | 26 | OA | 1625 | Donor | 234 | Player |
我的代码:
select ContactID, catInfo =
STUFF((select ','+cast(t1.CatCode as varchar)
from CntTyp t1 where t.ContactID = t1.ContactID
for xml path ('')), 1, 1, '')
from CntTyp t
group by ContactID
我的输出
| ContactID | catInfo |
|-----------|-------------|
| 89 | 26,27 |
| 90 | 26 |
| 91 | 26,1625,234 |
【问题讨论】:
标签: sql sql-server database for-xml-path