先创建表
create table #a_aa_a(
t_id int,--基友ID
t_name varchar(10),--游戏人物
[20210401] int,--游戏时间
[20210402] int,
[20210403] int,
)
insert into #a_aa_a VALUES (1,'盲僧',1,1,2)
insert into #a_aa_a VALUES (2,'盲僧',2,2,1)
insert into #a_aa_a VALUES (3,'盲僧',3,3,2)
insert into #a_aa_a VALUES (1,'亚索',1,1,1)
insert into #a_aa_a VALUES (2,'亚索',1,2,1)
insert into #a_aa_a VALUES (3,'亚索',2,3,1)
insert into #a_aa_a VALUES (1,'盖伦',3,1,3)
insert into #a_aa_a VALUES (2,'盖伦',3,2,3)
insert into #a_aa_a VALUES (3,'盖伦',3,3,3)
结果
目的:将列对应的日期列名转换为对应的数据值
对应Sql:
select t_id,t_name,t_name_num,t_date from #a_aa_a -----数据源
unpivot
--这里可以加列值,可不使用聚合函数,pivot必须使用聚合函数
(
t_name_num --对应日期游戏次数
FOR t_date IN ([20210401],[20210402],[20210403])
) t--表ID
结果: