如何将多行连接成一行

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