sql-server – SQL Server:FOR XML PATH – 嵌套/分组
发布时间:2020-12-12 16:47:32 所属栏目:MsSql教程 来源:网络整理
导读:我有数据看起来像: OrderID CustomerID ItemID ItemName10000 1234 222221 Product A10000 1234 222222 Product B10000 1234 333333 Product C20000 5678 222221 Product A20000 5678 222222 Product B20000 5678 333333 Product C 我想在SQL Server中编写一
我有数据看起来像:
OrderID CustomerID ItemID ItemName 10000 1234 222221 Product A 10000 1234 222222 Product B 10000 1234 333333 Product C 20000 5678 222221 Product A 20000 5678 222222 Product B 20000 5678 333333 Product C 我想在SQL Server中编写一个T-SQL查询来返回这样的数据: <Root> <Order> <OrderID>10000</OrderID> <CustomerID>1234</CustomerID> <LineItem> <ItemID>22222</ItemId> <ItemName>Product A</ItemName> </LineItem> <LineItem> <ItemID>22222</ItemId> <ItemName>Product B</ItemName> </LineItem> <LineItem> <ItemID>33333</ItemId> <ItemName>Product B</ItemName> </LineItem> </Order> <Order> <OrderID>20000</OrderID> <CustomerID>5678</CustomerID> <LineItem> <ItemID>22222</ItemId> <ItemName>Product A</ItemName> </LineItem> <LineItem> <ItemID>22222</ItemId> <ItemName>Product B</ItemName> </LineItem> <LineItem> <ItemID>33333</ItemId> <ItemName>Product B</ItemName> </LineItem> </Order> </Root> 我已经尝试使用以下XML格式返回查询: FOR XML PATH ('Order'),root ('Root') 但是这给了我每个行的Order节点(总共6个),而不是每个orderId(总共2个)的一个订单节点. 有任何想法吗? 解决方法select OrderID,CustomerID,( select ItemID,ItemName from @Orders rsLineItem where rsLineItem.OrderID = rsOrders.OrderID for xml path('LineItem'),type ) from (select distinct OrderID,CustomerID from @Orders) rsOrders FOR XML PATH ('Order'),root ('Root') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- CLR程序集里的 ExecuteScalar() 和 @@IDENTITY
- Sqlserver 游标 慢
- sql-server – 如何在SQL Server中编写foreach?
- SQLServer2005新增序列功能的几个函数:ROW_NUMB
- sqlserver排序规则&小数位精度不能自动截断的
- 【转载】SQLSERVER管理员必备DBCC命令
- SQL Server 2012 安装与启动图文教程
- 多年困扰我的一个技术问题,希望这方面的专家指点
- sql-server – 使用SQLAlchemy从MS SQL到Postgre
- sql-server – 使用SQL Server“FOR XML”:将结
热点阅读