【发布时间】:2018-11-30 17:37:45
【问题描述】:
我有两个 sql 表,正在寻找一个 sql 查询来从 Table2.ValueDescription 列中针对 Table1.ValueID 列中的每个数值选择数据并将结果保存在 Table3 中
表1:
ID ValueID
1 1,12,14
2 3,5,15
3 2,6,13,16
表2:
ValueID ValueDescription
1 Motor
2 Low
3 Failed
4 New Install
5 New Item
6 Max Value
7 AC Current
8 DC Current
9 Not Reached
10 NA
11 Cutoff
12 Manual
13 Automatic
14 Device Not Found
15 Halt
16 Renew
预期结果:
表3:
ID ValueID Result
1 1,12,14 Motor,Manual,Device Not Found
2 3,5,15 Failed,New Item,Halt
3 2,6,13,16 Low,Max Value,Automatic,Renew
使用 SQL Server Management Studio
这是我尝试过的查询
SELECT Table1.ValueID,
Stuff((SELECT ',' + CAST(Table2.Description AS VARCHAR(100))
FROM Table2
WHERE Table1.ValueID LIKE Table2.ValueID
FOR Xml Path('')),1,1,'')
FROM Table1
我在这里缺少什么?
【问题讨论】:
-
查看拆分字符串和 STUFF...拆分字符串以将第一个表与第二个表连接起来,然后使用 STUFF 模式将事物串联起来。
-
我很震惊,特别是考虑到发布答案的人,没有人提到存储分隔数据是多么可怕。这是一个关于它到底有多糟糕的精彩讨论。 stackoverflow.com/a/3653574/3813116
-
@SeanLange 在我的辩护中,我已经说过很多次了,我很震惊人们只是继续以这种方式存储数据,然后需要处理它,却找不到几十个之前的讨论... :-)
-
嗯...好的。不确定如何存储分隔数据不存储分隔数据。但无论如何。
标签: sql sql-server sql-server-2017