有数据如下:
时间 姓名
2010-06-28 08:44:41.000 AA
2010-06-28 09:44:41.000 AA
2010-06-28 10:44:41.000 AA
2010-06-28 18:09:48.000 AA
2010-06-28 18:48:28.000 AA
........
等等 数据
请问高手 我如何可以判断某一天最早的时间和最晚的时间。
结果如下: 时间 姓名 最早时间 最晚时间
2010-06-28 AA 08:44 18:48请高手指点!!!!
时间 姓名
2010-06-28 08:44:41.000 AA
2010-06-28 09:44:41.000 AA
2010-06-28 10:44:41.000 AA
2010-06-28 18:09:48.000 AA
2010-06-28 18:48:28.000 AA
........
等等 数据
请问高手 我如何可以判断某一天最早的时间和最晚的时间。
结果如下: 时间 姓名 最早时间 最晚时间
2010-06-28 AA 08:44 18:48请高手指点!!!!
解决方案 »
- 通过在扩展信息表中添加记录来实现在基本表添加列(逻辑上)
- SQL Server 2005数据库中的Output子句
- 随机生成可指定数字个数于每一行的超难问题!!!
- DBD:MySQL-4.018的安装问题
- 删除一张表中,其中一个字段重复的数据,保留一条数据。疑问,有条件
- SQL 字段列表值查询 多对多
- 金碟ERP制作报表一个问题搞得我头轰了二天了`求救!
- 如何在使用多个go命令的.sql文档中设置一个全局变量
- 有关MSSQL2000 jdbc的prepareStatement问题,请进,众多论坛无人回帖,急急急!!!
- 同一个表相同编号,如何进行加减
- sybase .db数据库不能正常打开,求高手解决
- SQLServer08Express版R2版 SQLServer08Developer版R2版之间数据库转换
[Author]: OrchidCat[OC]_轻骑兵(向高手学习...)
[Time]: 2010-07-12 09:34:11
[Place]: From Beijing
[Version]:
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86)
Feb 9 2007 22:47:07
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)*/
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([时间] datetime,[姓名] varchar(2))
insert [TB]
select '2010-06-28 08:44:41.000','AA' union all
select '2010-06-28 09:44:41.000','AA' union all
select '2010-06-28 10:44:41.000','AA' union all
select '2010-06-28 18:09:48.000','AA' union all
select '2010-06-28 18:48:28.000','AA'select * from [TB]SELECT
[日期]= CONVERT(VARCHAR(10),[时间],120),
[姓名],
[1]=MIN(CONVERT(VARCHAR(10),[时间],108)),
[2]=Max(CONVERT(VARCHAR(10),[时间],108))
FROM [dbo].[TB]
GROUP BY CONVERT(VARCHAR(10),[时间],120),
[姓名]/*
日期 姓名 1 2
---------- ---- ---------- ----------
2010-06-28 AA 08:44:41 18:48:28(1 行受影响)
*/
declare @tb table (时间 datetime,姓名 varchar(2))
insert into @tb
select '2010-06-28 08:44:41.000','AA' union all
select '2010-06-28 09:44:41.000','AA' union all
select '2010-06-28 10:44:41.000','AA' union all
select '2010-06-28 18:09:48.000','AA' union all
select '2010-06-28 18:48:28.000','AA'
select convert(varchar(10),时间,120)时间,
姓名,
min(convert(varchar(5),时间,108))最早时间,
max(convert(varchar(5),时间,108))最晚时间
from @tb
group by convert(varchar(10),时间,120),姓名
/*
(5 行受影响)
时间 姓名 最早时间 最晚时间
---------- ---- ----- -----
2010-06-28 AA 08:44 18:48(1 行受影响)
*/
min(convert(varchar(5),时间,14)) 最早时间,
max(convert(varchar(5),时间,14)) 最晚时间
from tb
group by convert(varchar(10),时间,120),姓名
FROM TB
GROUP BY CONVERT(VARCHAR(10),[时间],120),[姓名]
if object_id('[tw]') is not null drop table [tw]
go
create table [tw] (时间 datetime,姓名 varchar(2))
insert into [tw]
select '2010-06-28 08:44:41.000','AA' union all
select '2010-06-28 09:44:41.000','AA' union all
select '2010-06-28 10:44:41.000','AA' union all
select '2010-06-28 18:09:48.000','AA' union all
select '2010-06-28 18:48:28.000','AA'select distinct 姓名,
a=(select top 1 时间 from tw where 姓名=t.姓名 order by 时间 desc ),
b=(select top 1 时间 from tw where 姓名=t.姓名 order by 时间 asc )
from [tw] t姓名 a b
---- ----------------------- -----------------------
AA 2010-06-28 18:48:28.000 2010-06-28 08:44:41.000(1 行受影响)