sqlserver交叉表出先问题请帮忙看下

hn8158 2012-06-25 11:14:35
create TABLE #mpsl
(
员工工时状态 varchar(50),
员工登记姓名代码 int,
考勤登记日期 date,
日考勤序号 int,
考勤登记时间 varchar(50),
统计年份月份 varchar(50),
统计年份月份代码 int,
考勤登记种类 varchar(50)
)
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',1,'1990-01-01',1,'01:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',1,'1990-01-01',2,'03:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',1,'1990-01-01',3,'04:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',1,'1990-01-01',4,'05:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',1,'1990-01-01',5,'06:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',1,'1990-01-01',6,'07:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',2,'1990-01-01',1,'01:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',2,'1990-01-01',2,'02:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',2,'1990-01-01',3,'03:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',2,'1990-01-01',4,'04:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',2,'1990-01-01',5,'05:00','1990-01-01',0,'出勤')
insert into #mpsl(员工工时状态,员工登记姓名代码,考勤登记日期,日考勤序号,考勤登记时间,统计年份月份,统计年份月份代码,考勤登记种类) values ('出勤制',2,'1990-01-01',6,'06:00','1990-01-01',0,'出勤')




select 员工工时状态,员工登记姓名代码,考勤登记日期, 统计年份月份,统计年份月份代码, 考勤登记种类,(case 日考勤序号 when '1' then 考勤登记时间 else '0:00' end) as '第1考勤时间',(case 日考勤序号 when '2' then 考勤登记时间 else '0:00' end) as '第2考勤时间',(case 日考勤序号 when '3' then 考勤登记时间 else '0:00' end) as '第3考勤时间',(case 日考勤序号 when '4' then 考勤登记时间 else '0:00' end) as '第4考勤时间',(case 日考勤序号 when '5' then 考勤登记时间 else '0:00' end) as '第5考勤时间',(case 日考勤序号 when '6' then 考勤登记时间 else '0:00' end) as '第6考勤时间' from #mpsl group by 员工工时状态,员工登记姓名代码,考勤登记日期,统计年份月份,统计年份月份代码,考勤登记种类,日考勤序号,考勤登记时间



出来的结果是梯形的 应该来说一个用户一天的考勤应该是一条数据 而不是6条
应该是
出勤制 1 1990-01-01 1990-01-01 0 出勤 01:00 03:00 04:00 05:00 06:00 07:00






...全文
98 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hn8158 2012-06-25
  • 打赏
  • 举报
回复
把group by 中的 时间和序号去掉就可以了

11,850

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧