T-SQL字符串连接

T-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

希望有人能帮上忙-我是一个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
表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分钟内就解决了我花了一整天的时间胡闹的问题!非常非常感谢,我的荣幸。你做了所有艰难的事情,却忽略了最后一点。这是因为你知道你可以在演员中加入一个子条款。。。再次感谢。