一尘不染

T-SQL-字符串串联

sql

希望有人能提供帮助-我是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            A
20            B
30            C

TABLE2中的COL2是COL2 TABLE1中数字数据的字符表示。我希望这是可以理解的?

我已经弄清楚了如何从TABLE1中选择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 TABLE2中的数据…即:

COL1         COL2Concat
1            A
2            B
3            C
4            A, B
5            B
6            C
7            A, B, C

任何想法-我一直很诚实,因为我尝试修改STUFF查询,但似乎永远不会正确…


阅读 170

收藏
2021-05-23

共1个答案

一尘不染

你可以尝试…

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
2021-05-23