2017-04-09 117 views
0

我有一个简单的查询,它返回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,但它不起作用,因为我认为这不是正确的做法。

+0

http://stackoverflow.com/questions/17591490/how-to-make-a-query-with-group-concat-in-sql-server – scaisEdge

+0

感谢@scaisEdge – NicoRiff

回答

1

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

+0

感谢@Thinster我将发布它是如何工作的 – NicoRiff

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 
+0

我appericiate,你试过你自己的。但包括如此多的列在组通过往往导致错误的结果和糟糕perfromance.http://stackoverflow.com/questions/194852/concatenate-many-rows-into -a单文本串 – KumarHarsh

相关问题