【发布时间】:2016-11-07 07:15:16
【问题描述】:
我有下表数据:
name | serviceName | contractNo | materialNo
--------------------------------------------
item1 managed foo 123456 A6Ax33444
item1 managed bar 534454 A6A3222x7
这就是我需要的结果:
name | serviceName1 | contractNo1 | materialNo1 | serviceName2 | contractNo2 | materialNo2
item1 managed foo 123456 A6Ax33444 managed bar 534454 A6A3222x7
此示例仅包含两个服务名称,但可能有 0 到大约 10 个不同的服务。
我尝试了几件事,使用像 SQL Server: Examples of PIVOTing String data 或 Combine multiple rows into multiple columns dynamically in SQL Server 这样的旋转和动态 SQL 查询,但无法让它工作。
真正的数据是通过多个join查询的,name来自一个表,serviceName、contractNo和materialNo是从另一个表join的,列多很多,但内容是一样。
感谢您的帮助!
【问题讨论】:
-
通过动态 SQL 应该没有问题:首先声明一个变量,该变量取 Count(distinct) 的总数,然后从 0 重复到 Var 并连接一个字符串...但问题是:以后你想如何处理这张桌子?正如您所提到的,可能有 0 到 10 列...所以也许现在您创建一个最多包含 10 列的表...明天您会收到第 11 行 - 现在呢?此外:即使您不将其存储在表格中,而是仅在某种报告中显示:该行的大小是多少?为什么不以某种表格/树的形式显示它
-
@Rene:感谢您的评论。整个东西都用在一个由 EF6 调用的存储过程中,然后显示在一个 ASPxGrid (devexpress) 中。
标签: sql-server sql-server-2008