sql - 多个 ID 在同一列中的查找名称
问题描述
我正在处理一些看起来像这样的数据,在 Customer 表中(还有其他列):
客户ID | 产品编号 |
---|---|
11111 | 256,389 |
11112 | 789,564,468 |
还有一个产品表,其中包含产品 ID 和产品名称(以及其他列)
我需要编写一个查询,它将构成视图的基础,它基本上用产品 ID 代替产品名称,但将其保存为一列中的逗号分隔列表,因此输出将如下所示:
客户ID | 产品 |
---|---|
11111 | 苹果、橙子 |
11112 | 梨、香蕉、甜瓜 |
我知道这看起来很可怕,而且我还有其他表格使用 cross_apply 将每个产品分开到每一行,但客户也希望看到这样的数据。
解决方案
我准备了一个例子,希望能满足你的需要
DECLARE @Tbl1 TABLE(ID INT, Value INT)
INSERT INTO @Tbl1 VALUES (1,100),(1,200),(1,300),(1,400)
SELECT ID
,STUFF((SELECT ', ' + CAST(Value AS VARCHAR(10)) [text()]
FROM @Tbl1
WHERE ID = t.ID
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') Value
FROM @Tbl1 t
GROUP BY ID
推荐阅读
- json - 如何在 Laravel 中使用 Api 从两个表中获取所有记录
- django - 单击提交按钮后未添加评论
- javascript - 我正在尝试使用 jquery toggle 在文本和图像之间交换
- android - 附加 Firebase 令牌以启动 URL -Trusted Web 活动
- vim - 一个简单的解决方案,我可以使用 Vim 将 3 行文本连接/连接在一起
- javascript - 从枚举创建通用类型
- linux - 我的 Linux 可执行程序中的段 00 是什么(64 位)
- python - 将 Python Selenium 用于 SVG 元素
- c# - c# 引号中单词的子字符串
- bash - 命令行参数无法正常工作