不使用聚合函数进行透视以显示所有值
Pivot without using an aggregate function to show all values
我有一个 SQL table 下面是它的图片。
我需要使用 tablet 个名称作为列名称,并在下面的行中显示它们的时间。
共有三个不同的 tablets,每个都有自己的主键。
示例列名称 augmenten 并在此列中显示键 157 的所有时间。
我想要下面这样的东西
你可以试试下面的方法
select [157],[158],[159] from
(
select
koy, dateonly, time,
row_number() over(partition by koy order by dateonly desc,time desc) as ranking
from t
)s
pivot
(
max(time) for koy in ([157],[158],[159])
)p
它给我的输出如下
使用的参考查询:
create table t(koy int, tablet varchar(10), [time] time,dayz varchar(20),dateOnly date);
insert into t values
(157,'A','13:27:36 PM','Sat','03/12/2016'),
(157,'A','13:28:06 PM','Sat','03/12/2016'),
(157,'A','13:28:36 PM','Sat','03/12/2016'),
(158,'P','15:25:11 PM','Sat','03/12/2016'),
(158,'P','15:25:41 PM','Sat','03/12/2016'),
(158,'P','15:26:11 PM','Sat','03/12/2016'),
(159,'P','23:26:11 PM','Sat','03/12/2016')
我有一个 SQL table 下面是它的图片。
我需要使用 tablet 个名称作为列名称,并在下面的行中显示它们的时间。 共有三个不同的 tablets,每个都有自己的主键。
示例列名称 augmenten 并在此列中显示键 157 的所有时间。 我想要下面这样的东西
你可以试试下面的方法
select [157],[158],[159] from
(
select
koy, dateonly, time,
row_number() over(partition by koy order by dateonly desc,time desc) as ranking
from t
)s
pivot
(
max(time) for koy in ([157],[158],[159])
)p
它给我的输出如下
使用的参考查询:
create table t(koy int, tablet varchar(10), [time] time,dayz varchar(20),dateOnly date);
insert into t values
(157,'A','13:27:36 PM','Sat','03/12/2016'),
(157,'A','13:28:06 PM','Sat','03/12/2016'),
(157,'A','13:28:36 PM','Sat','03/12/2016'),
(158,'P','15:25:11 PM','Sat','03/12/2016'),
(158,'P','15:25:41 PM','Sat','03/12/2016'),
(158,'P','15:26:11 PM','Sat','03/12/2016'),
(159,'P','23:26:11 PM','Sat','03/12/2016')