T-SQL - - 字符串连接
问题描述:
希望有人能帮助我是新手SQL黑客T-SQL - - 字符串连接
我有SQL Server上的两个表2005表1和TABLE2:
TABLE1
COL1 COL2
1 10
2 20
3 30
4 10
4 20
5 20
6 30
7 10
7 20
TABLE2
COL1 COL2
10 A
20 B
30 C
COL2在TABLE2是在数值数据的一个字符表示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查询,但它似乎永远不会出来的权利...
答
你可以试试...
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? – LittleBobbyTables 2010-07-30 15:47:32
大概你已经试过把查询中的所有'TABLE1'改成'TABLE2'。我无法正确地看到为什么这不起作用。你得到了什么? – 2010-07-30 15:52:37
是的,这个例子很简单,但我需要显示A,B,C连接成10,20,30等。 – JamesH 2010-07-30 15:53:04