-
sqlserver 按一天时间段行转列 ([上午上班时间] [上午下班时间] [下午上班时间] [下午下班时间] )10
sqlserver
一张表内,储存了员工打卡的全部记录如2011年8月1号
*************************************************
[员工EmployeeID] [打卡时间CardTime ]
1 2011-08-01 08:01:27
1 2011-08-01 11:33:271 2011-08-01 13:32:27
1 2011-08-01 17:30:272 2011-08-01 08:22:27
2 2011-08-01 11:21:27
2 2011-08-01 17:32:27
*************************************************
现在要实现的功能
查询每个员工打卡一天4条记录(也可能少于4条记录,因为没打卡) 转成1行4列怎么写查询后如下:
*************************************************
[员工ID] [上午上班时间] [上午下班时间] [下午上班时间] [下午下班时间]1 8:01 11:33 13:32 17:30
2 8:22 11:21 17:32
*************************************************其中上下班时间段为
( convert(varchar(10), c.CardTime ,8) between '07:00:00' and '10:00:00')
上午下班时间段
( convert(varchar(10), c.CardTime ,8) between '11:00:00' and '13:00:00')
下午上班时间段
( convert(varchar(10), c.CardTime ,8) between '13:00:00' and '15:00:00')
下午下班时间段
( convert(varchar(10), c.CardTime ,8) between '17:00:00' and '00:00:00')
问题补充:http://zhidao.baidu.com/question/315925645.html <br />百度有高手,查询出来了2011年9月04日 20:40
4个答案 按时间排序 按投票排序
-
select userid,max(上午上班时段) 上午上班时段,max(上午下班时段) 上午下班时段,max(下午上班时段) 下午上班时段, max(下午下班时段) 下午下班时段 from ( select userid, case when logtime >= '07:00:00' and logtime <'10:00:00' then logtime else '' end 上午上班时段, case when logtime >= '11:00:00' and logtime <'13:00:00' then logtime else '' end 上午下班时段, case when logtime >= '13:00:00' and logtime <'15:00:00' then logtime else '' end 下午上班时段, case when logtime >= '17:00:00' and logtime <'00:00:00' then logtime else '' end 下午下班时段 from ( select a.userid,convert(varchar(10),a.workdate ,108) logtime,a.workdate from ( your_table_name ) as a ) t ) tab group by userid ;
your_table_name
你的表名,SQL中的语句你改写成你表中的字段名称。注意:如果你的表需要获取当天的员工记录信息,2011年9月05日 14:43
-
select empoyeeid "[员工ID]" , (select to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss')
from carttime a
where to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss') between '07:00:00' and '10:00:00' and a.empoyeeid = c.empoyeeid)"[上午上班时间]" ,
(select to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss')
from carttime a
where to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss') between '11:00:00' and '13:00:00' and a.empoyeeid = c.empoyeeid)"[上午下班时间]",
(select to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss')
from carttime a
where to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss') between '13:00:00' and '15:00:00' and a.empoyeeid = c.empoyeeid)"[下午上班时间]",
(select to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss')
from carttime a
where to_char(to_date(cardtime, 'yyyy-mm-dd hh24:mi:ss'),
'hh24:mi:ss') between '17:00:00' and '24:00:00' and a.empoyeeid = c.empoyeeid)"[下午下班时间]"
from carttime c
group by c.empoyeeid
我给出了 oracle的做法 我亲自试过了 不知道是不是你想要的结果。如果有好的建议 ,请相互学习。2011年9月05日 11:41
相关推荐
在sql server 数据库中,在一段时间范围内,间隔几条数据取出一条信息的检索方法。如:时间段内“2020-10-10 00:00:00” 到“2020-10-11 00:00:00”内,间隔30秒取出一套数据方法
SQL 行转列+动态获取列名 通用的动态获取列名
描述中提到的"sqlserver转oracle"则是指将SQL Server数据库的内容迁移到Oracle数据库的过程。这个过程涉及到SQL语法的转换,因为SQL Server和Oracle虽然都遵循SQL标准,但各自的语法特性和函数库有所不同。例如,SQL...
可根据关键字符将一列分成多行显示,例如 A B 1 1.1.2 拆分成 1 1 1 1 1 2 进行相关的显示
MySQL和SQL Server是两种非常流行的DBMS,分别由Oracle公司和Microsoft公司开发。当需要在两者之间进行数据迁移时,就需要用到专门的转换工具。标题提到的“mysql转化成sql server”和“sql转化成mysql工具”就是...
SQL Server连接工具是数据库管理员和开发人员用于与Microsoft SQL Server交互的重要软件。这些工具提供了多种功能,包括数据库的创建、管理、查询、备份、恢复以及性能优化等。在本篇文章中,我们将深入探讨SQL ...
SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...
SQL Server Native Client 10.0 是微软推出的一款专门用于与SQL Server 2008及后续版本交互的客户端库,它集成了ODBC(Open Database Connectivity)和OLE DB(Object Linking and Embedding, Database)接口。...
SQL server对日期时间的格式,大小比较,差值等等 。很全面的对时间一系列操作。
SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业级的数据存储、管理和分析。"Spotlight on SQL Server"很可能是指一款专门针对SQL Server的监控和性能优化工具,它可以帮助管理员深入了解SQL ...
SQL Server客户端连接工具是数据库管理员和开发人员用来与Microsoft SQL Server进行交互的重要工具。它提供了图形用户界面(GUI)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...
SQL Server 是一种关系型数据库管理系统,广泛应用于各种行业。然而,在实际应用中,我们经常会遇到导入超大 SQL 脚本文件的问题。本文将介绍如何使用 osql 工具来导入超大 SQL 脚本文件。 什么是 osql? osql 是 ...
SQL Server Native Client 10.0 是微软推出的一款专门针对SQL Server数据库的客户端驱动程序,它为应用程序提供了访问SQL Server数据库的高效接口。这个驱动程序是SQL Server 2008的一部分,支持ODBC(Open Database...
标签中提到了"SQLSERVER", "MSSQL", "MYSQL", "数据库", "转换",这些都是与数据库迁移密切相关的关键词。"SQLSERVER"和"MSSQL"通常指SQL Server,而"MySQL"是目标数据库系统。"数据库"指的是这些工具操作的对象,而...
SQLServer+ 免安装版 SQLServer+是在原有SQLServer2000的基础上改善了数据库安装的繁锁性,让软件企业在发布基于SQLServer2000数据库软件的时候,只要把软件打包进入安装包而不需要再单独安装数据库,也不需要另外...
SQL Server 2005/2008 Express Profiler 是微软SQL Server数据库管理系统中一个强大的性能监视工具,尤其适用于SQL Server 2008 Express版本。它允许开发者和DBA(数据库管理员)深入地洞察数据库系统的运行情况,...
在这个压缩包“sqlserver2019.rar”中,包含了两个重要的安装文件:SSMS-Setup-CHS.exe和SQL2019-SSEI-Dev.exe。 SSMS(SQL Server Management Studio)是用于管理和开发SQL Server的主要工具,SSMS-Setup-CHS.exe...
[Microsoft Press] Microsoft SQL Server 2012 技术内幕 (英文版) [Microsoft Press] Microsoft SQL Server 2012 Internals (E-Book) ☆ 图书概要:☆ Dive deep inside the architecture of SQL Server 2012 ...
String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase"; String username = "myUsername"; String password = "myPassword"; try { Connection conn = DriverManager.getConnection(url, ...
`jdbc:sqlserver://<hostname>:;databaseName=;user=;password=<password>` 6. 在“JDBC驱动”部分,选择解压后的sqljdbc4.jar或sqljdbc.jar的路径,并将其添加到Kettle的类路径中。 确保正确配置这些参数后,...