sql - 连接来自多列和多行的字符串
问题描述
如何连接 SQL Server 中多行多列的字符串。
我的桌子是这样的:
ItemId AttributeName AttributeValue
---------- ------------- --------------
1 Website www.abc.com
1 Github github.com/abc
1 Facebook facebook.com/abc
2 Website www.123.com
2 Instagram instagram.com/123
所需的输出是:
ItemId Weblinks
---------- -------------
1 Website: www.abc.com; Github: github.com/abc; Facebook: facebook.com/abc
2 Website: www.123.com; Instagram: instagram.com/123
我从其他类似的问题中读到可能需要 XML PATH。请谁能指导我如何实现这一目标?
解决方案
您可以使用FOR XML PATH()
:
SELECT DISTINCT T.ItemId, STUFF(Weblinks, 1, 1, '') AS Weblinks
FROM table T CROSS APPLY
( SELECT CONCAT(';', T1.AttributeName, ':', T1.AttributeValue)
FROM table T1
WHERE T1.ITEMID = T.ITEMID
FOR XML PATH('')
) T1(Weblinks);
推荐阅读
- swift - 如何使用 Swift 每秒有效地修改 5000 像素的大 UIImage 60 次
- c# - DSharpPlus 如何在 C# 中为 NSFW 创建或设置不和谐频道
- python - 为大量线程类实现线程池
- python - /posts/12/tesing/like/quote_from_bytes() 预期字节处的 TypeError
- ios - Flutter- 无法通过 VSCode 构建 ios,只能通过 Xcode
- r - 根据R中的时间范围选择数据框
- amazon-web-services - 如何在不设置 CORS 的情况下从浏览器列出 S3 存储桶中的对象?
- python - 我如何使用用户输入浮点数并在 Python 中找到平均值、最小值、最大值和范围
- php - 如何将迁移中的更改部署到分解的数据库?
- python-3.x - 无法在 Django 中加载图像