不使用聚合函数进行透视以显示所有值

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')