在逗号分隔列上将多行转换为单行

时间:2017-04-09 19:13:56

标签: sql sql-server

我有一个简单的查询,在连接2个表时返回2行。查询是这样的:

SELECT 
    id, fecha, tipo, fuente, origen, estado, gravedad, cliente, 
    sectores, datos, idInforme, idDepartamento
FROM 
    Informe I
INNER JOIN 
    InformeDepartamento ID ON I.ID = ID.idInforme

enter image description here

我需要的只是返回一行,其中'idDepartamento'列合并并用逗号分隔。所以内容是1,4

我怎样才能做到这一点?我试过PIVOT,但它没有用,因为我认为这不是正确的方法。

2 个答案:

答案 0 :(得分:1)

您可以使用STUFF和XML路径来获取所需内容。以下是如何使用它的一个很好的例子: stuff example

答案 1 :(得分:1)

STUFF函数和XMLPATH完成了工作。

SELECT id, 
    fecha, 
    tipo, 
    fuente, 
    origen, 
    estado, 
    gravedad, 
    cliente, 
    sectores, 
    datos, 
    idInforme, 
    STUFF((SELECT ',' + CAST(idDepartamento AS VARCHAR(5)) FROM InformeDepartamento WHERE idInforme = I.id FOR XML PATH('')),1,1,'') [PRUEBA]
FROM Informe I
INNER JOIN InformeDepartamento ID ON I.ID = ID.idInforme
GROUP BY id, fecha, tipo, fuente, origen, estado, gravedad, cliente, sectores, datos, idInforme