我有以下数据返回购买一个简单的SQL查询。站点数量可能会发生变化,但X,Y,Z是固定的(它们是不同类型的事故,存储的数据代表发生的次数)
| Site | X | Y | Z |
--------------------
A 1 2 3
B 4 5 6
C 7 8 9
我需要将其改为以下格式
| A | B | C |
--------------
1 4 7
2 5 8
3 6 9
到目前为止我有这个
select *
from Example
pivot
(
Max(X)
for site in ([A],[B],[C])
) as p
但我认为我需要多个聚合(X,Y和Z)。
这是一个创建基础数据的快速脚本
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Example](
[Site] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[X] [int] NOT NULL,
[Y] [int] NOT NULL,
[Z] [int] NOT NULL
) ON [PRIMARY]
insert into Example(Site, X,Y,Z) Values ('A',1,2,3)
insert into Example(Site, X,Y,Z) Values ('B',4,5,6)
insert into Example(Site, X,Y,Z) Values ('C',7,8,9)
任何帮助真的很受欢迎,因为我被卡住了!
标记
答案 0 :(得分:1)
在重新关注事故现场之前,你需要取消你的数据,如下所示:
select *
from Example
unpivot
(
numbers
for type in (x,y,z)
) as p
pivot
(
Max(numbers)
for site in ([A],[B],[C])
) as q