【问题标题】:Selecting with LEFT OUTER JOIN and return as comma-separated list [duplicate]使用 LEFT OUTER JOIN 选择并以逗号分隔的列表形式返回 [重复]
【发布时间】:2018-05-27 21:38:17
【问题描述】:

在 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 字符串聚合”。
  • 谢谢。我很确定我不是唯一一个遇到过这个问题的人,所以当然这个问题之前已经被问过了。但是,当您不确定如何提出问题时,有时可能很难在 google 上找到解决方案。

标签: sql sql-server-2008 tsql left-join string-aggregation


【解决方案1】:

如果我正确理解您的问题,那么以下是解决方案 SQLFiddler

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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2016-12-18
    • 2011-02-18
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多