T-SQL字符串连接
希望有人能帮上忙-我是一个SQL黑客新手(而且非常不擅长!) 我在SQL Server 2005上有两个表表表1和表2: 表1T-SQL字符串连接,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,希望有人能帮上忙-我是一个SQL黑客新手(而且非常不擅长!) 我在SQL Server 2005上有两个表表表1和表2: 表1 COL1 COL2 1 10 2 20 3 30 4 10 4 20 5 20 6 30 7 10 7 20 表2 COL1 COL2 10
COL1 COL2
1 10
2 20
3 30
4 10
4 20
5 20
6 30
7 10
7 20
表2
COL1 COL2
10 A
20 B
30 C
表2中的COL2是COL2表1中数值数据的字符表示。我希望这是可以理解的
我已经解决了如何从表1中选择COL1和COL2,并将结果连接起来以显示以下内容:
COL1 COL2Concat
1 10
2 20
3 30
4 10, 20
5 20
6 30
7 10, 20, 30
使用此选项:
SELECT COL1,
STUFF(( SELECT ',' + CAST(a.COL2 AS VARCHAR(255)) AS [text()]
FROM TABLE1 a
WHERE a.COL1 = b.COL1
ORDER BY a.COL2
FOR
XML PATH('')
), 1, 1, '') AS COL2Concat
FROM TABLE1 b
GROUP BY COL1
ORDER BY COL1
但是现在我想尝试得到相同的结果,除了使用COL2表2中的数据。。。i、 e:
COL1 COL2Concat
1 A
2 B
3 C
4 A, B
5 B
6 C
7 A, B, C
任何想法-我都坚持诚实,因为我已经尝试过修改STUFF查询,但它似乎永远不会正确出现…您可以尝试
SELECT COL1,
STUFF(( SELECT ',' + CAST((SELECT COL2
FROM TABLE2
WHERE TABLE2.COL1 = a.COL1) AS VARCHAR(255)) AS [text()]
FROM TABLE1 a
WHERE a.COL1 = b.COL1
ORDER BY a.COL2
FOR
XML PATH('')
), 1, 1, '') AS COL2Concat
FROM TABLE1 b
GROUP BY COL1
ORDER BY COL1
您想显示A、B、C而不是10、20、30?可能您已经尝试将查询中的所有
TABLE1
更改为TABLE2
。我不明白为什么这样不行。你得到了什么?没错。。这些例子太简单了,但我需要展示A,B,C的连接,比如10,20,30。布赖恩-谢谢。。你在大约1分钟内就解决了我花了一整天的时间胡闹的问题!非常非常感谢,我的荣幸。你做了所有艰难的事情,却忽略了最后一点。这是因为你知道你可以在演员中加入一个子条款。。。再次感谢。