sql - 使用 LEFT OUTER JOIN 选择并以逗号分隔的列表形式返回
问题描述
在 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” |
希望这是有道理的。
谢谢。
解决方案
如果我正确理解您的问题,那么下面是解决方案 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
推荐阅读
- python - 如何修复 Python 3.7 中的“KeyError:****_target”错误
- paypal - PayPal 结帐和 Braintree 类的问题
- linker - 针对静态库编译 Fortran 程序时找不到函数(在 Windows 中使用 IFORT)
- python-3.x - 如何将数据帧打包成一组或引用它们而不改变它们?蟒蛇 3
- javascript - Css - 如果元素到达屏幕上的某个位置,如何更改元素大小?
- customization - Acumatica:如何更改案例中的原因下拉选项?
- html - 导航栏仅在网站的一个部分中不可点击
- html - 如何在 flexbox 中创建具有固定导航栏的 3 列布局
- angular - 对象和原始值之间的类型断言失败
- python - AWS lambda 函数 python/pysparkl