0 0

sqlserver 按一天时间段行转列 ([上午上班时间] [上午下班时间] [下午上班时间] [下午下班时间] )10

sqlserver
一张表内,储存了员工打卡的全部记录

如2011年8月1号
*************************************************
[员工EmployeeID]   [打卡时间CardTime ]
        1                      2011-08-01 08:01:27
        1                      2011-08-01 11:33:27

        1                      2011-08-01 13:32:27
        1                      2011-08-01 17:30:27

        2                      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个答案 按时间排序 按投票排序

0 0

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
0 0




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
0 0

行转列,你可以参考我的提问,那些高手回答的http://www.iteye.com/problems/70434

2011年9月05日 11:00
0 0

问题提得感觉不明确啊。你是想把这张表变成你说的那种5个字段的表吗?直接新建张表就好了啊。然后jdbc处理下好了啊。

2011年9月05日 09:24

相关推荐

    SQL 行转列+动态获取列名

    SQL 行转列+动态获取列名 通用的动态获取列名

    SQL SERVER 根据关键字符,将一列分成多行

    可根据关键字符将一列分成多行显示,例如 A B 1 1.1.2 拆分成 1 1 1 1 1 2 进行相关的显示

    mysql转化成sql server sql转化成mysql工具

    MySQL和SQL Server是两种非常流行的DBMS,分别由Oracle公司和Microsoft公司开发。当需要在两者之间进行数据迁移时,就需要用到专门的转换工具。标题提到的“mysql转化成sql server”和“sql转化成mysql工具”就是...

    SqlServer连接工具

    SQL Server连接工具是数据库管理员和开发人员用于与Microsoft SQL Server交互的重要软件。这些工具提供了多种功能,包括数据库的创建、管理、查询、备份、恢复以及性能优化等。在本篇文章中,我们将深入探讨SQL ...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    Spotlight on SQL Server

    SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业级的数据存储、管理和分析。"Spotlight on SQL Server"很可能是指一款专门针对SQL Server的监控和性能优化工具,它可以帮助管理员深入了解SQL ...

    【经典】SQL server 日期时间操作大全

    SQL server对日期时间的格式,大小比较,差值等等 。很全面的对时间一系列操作。

    SQL server Native Client 10.0

    SQL Server Native Client 10.0 是微软推出的一款专门用于与SQL Server 2008及后续版本交互的客户端库,它集成了ODBC(Open Database Connectivity)和OLE DB(Object Linking and Embedding, Database)接口。...

    sql server客户端连接工具

    SQL Server客户端连接工具是数据库管理员和开发人员用来与Microsoft SQL Server进行交互的重要工具。它提供了图形用户界面(GUI)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...

    SQL Server Native Client 10.0

    SQL Server Native Client 10.0 是微软为SQL Server 2008和2008 R2设计的一个数据库访问接口,它集成了ODBC(Open Database Connectivity)和OLE DB(Object Linking and Embedding, Database)接口。在SQL Server ...

    SQL Server 到 Oracle 的SQL 语法自动翻译器源码

    这是小弟为了一个Oracle项目的应急之作,我们的系统(Delphi的三层架构)一直运行在sql server下面, 当时客户指定需要的是支持Oracle版本的应用系统, 这个系统不小,如果要将里面的SQL全部转换为Oracle,需要...

    SQL Server Native Client 10.0 驱动

    SQL Server Native Client 10.0 是微软推出的一款专门针对SQL Server数据库的客户端驱动程序,它为应用程序提供了访问SQL Server数据库的高效接口。这个驱动程序是SQL Server 2008的一部分,支持ODBC(Open Database...

    sql server 导入超大SQL脚本文件

    SQL Server 是一种关系型数据库管理系统,广泛应用于各种行业。然而,在实际应用中,我们经常会遇到导入超大 SQL 脚本文件的问题。本文将介绍如何使用 osql 工具来导入超大 SQL 脚本文件。 什么是 osql? osql 是 ...

    SQL Server数据库转Mysql数据库工具的一款工具

    标签中提到了"SQLSERVER", "MSSQL", "MYSQL", "数据库", "转换",这些都是与数据库迁移密切相关的关键词。"SQLSERVER"和"MSSQL"通常指SQL Server,而"MySQL"是目标数据库系统。"数据库"指的是这些工具操作的对象,而...

    SQLServer+ 免安装版

    SQLServer+ 免安装版 SQLServer+是在原有SQLServer2000的基础上改善了数据库安装的繁锁性,让软件企业在发布基于SQLServer2000数据库软件的时候,只要把软件打包进入安装包而不需要再单独安装数据库,也不需要另外...

    SQL SERVER 2005/2008 Express Profiler

    SQL Server 2005/2008 Express Profiler 是微软SQL Server数据库管理系统中一个强大的性能监视工具,尤其适用于SQL Server 2008 Express版本。它允许开发者和DBA(数据库管理员)深入地洞察数据库系统的运行情况,...

    sqlServer2014极简版

    SqlServer2014极简版,让你远离庞大缺无用的原版SqlServer,减少安装和启动时间。节约时间就是节约生命

    win7完美卸载sqlserver2005图解

    在 Windows 7 操作系统中,卸载 SQL Server 2005 可能会遇到一些麻烦,因为 SQL Server 2005 的组件都是分散的,需要一个一个卸载,否则可能会导致重新安装不成功。下面将逐步介绍卸载 SQL Server 2005 的方法。 ...

    SQL Server 中文帮助文档 chm格式

    SQL Server 是微软公司的一款关系型数据库管理系统,广泛应用于企业数据存储、管理和分析。这份"SQL Server 中文帮助文档 chm格式"是专为SQL Server用户准备的官方参考资料,旨在提供全面的技术支持和学习资源。CHM...

    SQL Server Native Client 9.0~11.0(32位和64位)

    SQL Server Native Client是微软开发的一款专门用于与SQL Server交互的客户端库,支持多种数据库访问接口,包括ODBC(Open Database Connectivity)和OLE DB(Object Linking and Embedding, Database)。...

Global site tag (gtag.js) - Google Analytics