Sql 使用左外部联接进行选择,并以逗号分隔列表的形式返回

Sql 使用左外部联接进行选择,并以逗号分隔列表的形式返回,sql,sql-server-2008,tsql,left-join,string-aggregation,Sql,Sql Server 2008,Tsql,Left Join,String Aggregation,在MS SQL Server 2008上,如何生成连接两个表的select语句,并以逗号分隔的列表形式返回表2的内容 例如: 表1包含我的所有订单,表2包含我的订单行。 我想选择订单中的所有字段,以及相应订单行中所有字段的逗号分隔列表,每个订单行用分号(或其他符号)分隔 比如说: | Orders.custno | Orders.name | Orders.email | Orders.phone | Order lines

在MS SQL Server 2008上,如何生成连接两个表的select语句,并以逗号分隔的列表形式返回表2的内容

例如: 表1包含我的所有订单,表2包含我的订单行。 我想选择订单中的所有字段,以及相应订单行中所有字段的逗号分隔列表,每个订单行用分号(或其他符号)分隔

比如说:

| Orders.custno | Orders.name | Orders.email     | Orders.phone | Order lines                                                         |
|---------------|-------------|------------------|--------------|---------------------------------------------------------------------|
| 123456        | Dave        | dave@example.com | 1234567890   | “112233”,”Running shoes”,”495.00”;”223344”,”Roller blades”,”699.00” |
希望这是有意义的


谢谢。

如果我正确理解了你的问题,那么下面就是解决方案


没有样本数据和期望的结果,没有人能帮助您。同时,您可以帮助自己和谷歌“SQL Server字符串聚合”。谢谢。我很确定我不是唯一一个遇到这个问题的人,所以这个问题以前当然有人问过。然而,有时在谷歌上很难找到解决方案,因为你不确定该如何表述这个问题。
SELECT p.productId,p.ProductName,tmp.List_output
FROM product p
LEFT OUTER JOIN 
(
SELECT  ProductId
       ,STUFF((SELECT ', ' + CAST(ProductLine AS VARCHAR(10)) [text()]
         FROM ProductLine 
         WHERE ProductId = t.ProductId
         FOR XML PATH(''), TYPE)
        .value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM ProductLine t
GROUP BY ProductId) tmp ON tmp.ProductId = p.ProductId