SQL Server Pivot 隐藏group
Posted FlyBird
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server Pivot 隐藏group相关的知识,希望对你有一定的参考价值。
SQL Server行列转换隐藏group
Pivot有一个隐藏的Group 分组, 除了Pivot column 和value列,其他列作为分组
Example:
IF NOT EXISTS(SELECT * FROM sys.tables where name = ‘Pivot_test‘)
CREATE TABLE Pivot_test
(
id1 int,
id2 int,
Pivot_column varchar(50),
value char(50)
)
insert into Pivot_test values(1,1,‘A‘,‘A_V‘),(1,1,‘B‘,‘B_V‘),(1,1,‘C‘,‘C_V‘),(1,1,‘D‘,‘D_V‘)
行列转换
select * from Pivot_test PIVOT(MAX(value) for Pivot_column in (A,B,C,D)) tem
更新A的id2值为2,再次行列转换,发现出现两行,证明id2影响了分组
update Pivot_test set id2 = 2 WHERE Pivot_column = ‘A‘
select * from Pivot_test PIVOT(MAX(value) for Pivot_column in (A,B,C,D)) tem
更新A的id1值为2,id2更新为旧的值1,再次查看行列转换结果,发现结果仍为两行,证明id1也在分组中
update Pivot_test set id2 = 1 WHERE Pivot_column = ‘A‘
update Pivot_test set id1 = 2 WHERE Pivot_column = ‘A‘
select * from Pivot_test PIVOT(MAX(value) for Pivot_column in (A,B,C,D)) tem
以上证明pivot是以除了Pivot column 和value的其他所有列作为分组
以上是关于SQL Server Pivot 隐藏group的主要内容,如果未能解决你的问题,请参考以下文章
使用 MS SQL Server 中的 Group by 字段将垂直 sql 结果转换为水平输出
Oracle SQL group by 查询,一种 PIVOT [重复]