如何将多行连接成一行
how to concatenate multiple rows into one
使用 SQL 2008 R2
我有两个 table,想创建一个 table,例如:
output
输入tables
input table 1
inout table 2
我试过使用stuff函数作为
SELECT o.DEPT_ID,o.CLIENT_ID,
code,
(STUFF((SELECT CAST(', ' + CODE AS VARCHAR(MAX))
FROM ORDERS
WHERE (o.FUNDER_ID = f.FUNDER_ID)
FOR XML PATH ('')), 1, 2, '')) AS funder_code
FROM FUNDERS f
join ORDERS o on o.FUNDER_ID=f.FUNDER_ID
where o.DEPT_ID=111 and CLIENT_ID='B001'
我没有得到输出。
首先,您想要的输出似乎包含第二个输入 table 中的 'name' 列作为逗号分隔列表,但您的代码暗示您想要 'code' 列连接起来。此解决方案连接 'name' 列。
其次,看你输入的tables,你不能直接用join ORDERS o on o.FUNDER_ID=f.FUNDER_ID
因为'B0000000019'不等于'F19'。但是,一旦您操作了这些列以便将它们连接起来,请尝试以下操作:
SELECT DISTINCT o.dept_id, o.client_id
,(STUFF((SELECT distinct CAST(', ' + name AS VARCHAR(MAX))
FROM FUNDERS f
JOIN ORDERS o2 ON o2.funder_id = f.funder_id
FOR XML PATH ('')), 1, 2, '')) AS funder_code
FROM ORDERS o
使用 SQL 2008 R2 我有两个 table,想创建一个 table,例如:
output
输入tables input table 1
inout table 2
我试过使用stuff函数作为
SELECT o.DEPT_ID,o.CLIENT_ID,
code,
(STUFF((SELECT CAST(', ' + CODE AS VARCHAR(MAX))
FROM ORDERS
WHERE (o.FUNDER_ID = f.FUNDER_ID)
FOR XML PATH ('')), 1, 2, '')) AS funder_code
FROM FUNDERS f
join ORDERS o on o.FUNDER_ID=f.FUNDER_ID
where o.DEPT_ID=111 and CLIENT_ID='B001'
我没有得到输出。
首先,您想要的输出似乎包含第二个输入 table 中的 'name' 列作为逗号分隔列表,但您的代码暗示您想要 'code' 列连接起来。此解决方案连接 'name' 列。
其次,看你输入的tables,你不能直接用join ORDERS o on o.FUNDER_ID=f.FUNDER_ID
因为'B0000000019'不等于'F19'。但是,一旦您操作了这些列以便将它们连接起来,请尝试以下操作:
SELECT DISTINCT o.dept_id, o.client_id
,(STUFF((SELECT distinct CAST(', ' + name AS VARCHAR(MAX))
FROM FUNDERS f
JOIN ORDERS o2 ON o2.funder_id = f.funder_id
FOR XML PATH ('')), 1, 2, '')) AS funder_code
FROM ORDERS o