2017-04-09 130 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

相關問題