SQL查询语句【时间段】

txws1119 2014-12-15 10:05:34
表结构
名称 时间
A 2014-12-15 08:00
A 2014-12-15 09:00
B 2014-12-15 08:00

希望出来的结果

名称 开始时间 结束时间
A 2014-12-15 08:00 2014-12-15 09:00
B 2014-12-15 08:00 2014-12-15 08:00
...全文
321 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyena2009 2014-12-24
  • 打赏
  • 举报
回复
引用 6 楼 wtujedp 的回复:
select 名称,min(时间),max(时间) from 表 group by 名称
这个写法不错,哈。
baidu_22049569 2014-12-18
  • 打赏
  • 举报
回复
感谢各位,我也顺便学习了
normandj 2014-12-17
  • 打赏
  • 举报
回复
select 名称,min(时间),max(时间) from 表 group by 名称
比较直观
HelloWordGirl 2014-12-17
  • 打赏
  • 举报
回复
WITH cte AS ( SELECT 'A' AS NAME,' 2014-12-15 08:00'AS DateTimes UNION ALL SELECT 'A',' 2014-18-15 08:00' UNION ALL SELECT 'B',' 2014-12-15 08:00' UNION ALL SELECT 'C',' 2014-12-15 08:00' ), cte2 AS ( SELECT NAME ,MIN(DateTimes)AS MiDate,MAX(DateTimes)AS MaxDate FROM cte AS c GROUP BY Name ) SELECT * FROM cte2
wtujedp 2014-12-16
  • 打赏
  • 举报
回复
select 名称,min(时间),max(时间) from 表 group by 名称
Tiger_Zhao 2014-12-16
  • 打赏
  • 举报
回复
这种原始数据是没法提高效率的。
按上面几位的查询方法,把查询结果放入一个永久表保存起来,并且建好索引,以后就从结果表中查询,这才是比较高效的方式。
hepe00 2014-12-15
  • 打赏
  • 举报
回复

select [Name],max([Date]) as date
from Tb
group by [Name]

--若是很多字段,不适合group by,则可使用Row_Number()

select [Name],[Date]
from (
	select [Name],[Date]
		,row_number()over(partition by [Name] order by [Date] desc) as sn
	from Tb
	) as t
where t.sn=1
bw555 2014-12-15
  • 打赏
  • 举报
回复
直接group取时间的min和max分别作为起始和结束?
txws1119 2014-12-15
  • 打赏
  • 举报
回复
因为涉及的数据量较大,希望能有比较优化的语句
0808xyj 2014-12-15
  • 打赏
  • 举报
回复
select name,startdate,max(enddate) from 
(

select a.name,min(a.rdate) startdate,b.rdate enddate from t_yp a,t_yp b where a.name = b. name and a.rdate <= b.rdate group by a.name,b.rdate
) t
group by name,startdate

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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