【发布时间】:2019-04-08 22:12:54
【问题描述】:
我有一个详细信息表,可以通过以下方式描述:
Create table #Details (
Id int identity,
HeaderId int,
ChannelId int,
Value float
)
我们插入一些种子数据:
insert into #Details (HeaderId, ChannelId, Value) values(1, 0, 1019.51)
insert into #Details (HeaderId, ChannelId, Value) values(1, 1, 20.1)
insert into #Details (HeaderId, ChannelId, Value) values(1, 2, 21.2)
insert into #Details (HeaderId, ChannelId, Value) values(1, 3, 22.3)
insert into #Details (HeaderId, ChannelId, Value) values(1, 4, 23.4)
insert into #Details (HeaderId, ChannelId, Value) values(2, 0, 1020.62)
insert into #Details (HeaderId, ChannelId, Value) values(2, 1, 26.1)
insert into #Details (HeaderId, ChannelId, Value) values(2, 2, 27.2)
insert into #Details (HeaderId, ChannelId, Value) values(2, 3, 28.3)
insert into #Details (HeaderId, ChannelId, Value) values(2, 4, 29.4)
全选产生以下结果:
我想将列数据转置为行,以产生以下输出:
提前致谢。
【问题讨论】:
-
哪个数据库?
Channelld是否仅包含 0,1,2,3,4 个值,还是您可以拥有更多?如果没有,您可以在 SQL Server 中使用 PIVOT。 -
SQL 服务器。我以为你可以使用 pivot ,但我没有得到正确的查询。因此在这里提出问题。谢谢。
-
如果您知道
0,1,2,3,4的值将提前在枢轴中使用,那么一个普通的旧pivot是要走的路。如果您在运行 sql 之前不知道列标题的值是什么,那么您需要执行Dynamic Pivot。您必须让我们知道哪种方案适合此处以获得正确答案,因为解决方案会有所不同。
标签: sql sql-server tsql pivot