SQL Server:pivot功能,需要透视表
发布时间:2020-05-24 12:41:37 所属栏目:MsSql 来源:互联网
导读:我在SQL Server中有以下格式的数据. -ID ID2 status time-1384904453 417 stop 2013-11-19 23:40:43.000-1384900211 417 start 2013-11-19 22:30:06.000-1384822614 417 stop 2013-11-19 00:56:36.
|
我在SQL Server中有以下格式的数据. -ID ID2 status time -1384904453 417 stop 2013-11-19 23:40:43.000 -1384900211 417 start 2013-11-19 22:30:06.000 -1384822614 417 stop 2013-11-19 00:56:36.000 -1384813810 417 start 2013-11-18 22:30:06.000 -1384561199 417 stop 2013-11-16 00:19:45.000 -1384554623 417 start 2013-11-15 22:30:06.000 -1384475231 417 stop 2013-11-15 00:26:58.000 -1384468224 417 start 2013-11-14 22:30:06.000 -1384388181 417 stop 2013-11-14 00:16:20.000 -1384381807 417 start 2013-11-13 22:30:06.000 -1384300222 417 stop 2013-11-12 23:50:11.000 -1384295414 417 start 2013-11-12 22:30:06.000 -1384218209 417 stop 2013-11-12 01:03:17.000 -1384209015 417 start 2013-11-11 22:30:06.000 我需要的是能够以下列格式显示数据. -ID2 start stop -417 2013-11-19 22:30:06.000 2013-11-19 23:40:43.000 -417 2013-11-18 22:30:06.000 2013-11-19 00:56:36.000 是否有可能做到这一点?我在SQL Server中尝试过pivot,但它只返回一条记录.有人可以帮忙吗? 解决方法你可以使用PIVOT函数来获得结果,我只是将row_number()窗口函数应用于数据,这样你就可以为每个ID2返回多行:select id2,start,stop
from
(
select id2,status,time,row_number() over(partition by status
order by time) seq
from yourtable
) d
pivot
(
max(time)
for status in (start,stop)
) piv
order by start desc;
见SQL Fiddle with Demo. 您还可以使用带有CASE表达式的聚合函数来获取最终结果: select
id2,max(case when status = 'start' then time end) start,max(case when status = 'start' then time end) stop
from
(
select id2,row_number() over(partition by status
order by time) seq
from yourtable
) d
group by id2,seq;
见SQL Fiddle with Demo (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – SQL Server获取日期字段,如果少于3个月
- sql – 多个FULL OUTER JOIN在多个表上
- sql – select语句中的Subquery如何在oracle中工作
- MySQL5.6基本优化配置
- sql-server – 自然键在SQL Server中提供的性能是否比代理整
- sql-server-2005 – 在create table命令后授予用户插入权限
- sql – 带/不带传递参数的条件存储过程
- 数据库设计 – 有效的mysql表/索引设计为3500万行表,有200个
- MAC下MYSQL数据库密码忘记的解决办法
- sql-server – SQL存储过程是否区分大小写?
