create table test3
(
name varchar(50),
sl int,
rq1 datetime,
rq2 datetime
)
insert into test3 select 'a',100,'2014-08-01 13:00','2014-08-01 13:10'
insert into test3 select 'a',200,'2014-08-01 13:10','2014-08-01 13:20'
insert into test3 select 'a',300,'2014-08-01 14:00','2014-08-01 14:10'
insert into test3 select 'a',400,'2014-08-01 14:10','2014-08-01 14:20'
/*
要得到这样结果集
name sl总和 时间段
a 300 2014-08-01 13:10--2014-08-01 13:20
a 700 2014-08-01 14:10--2014-08-01 14:20
*/
drop table test3
------解决方案--------------------
按小时分组?
还是首位相连?
------解决方案--------------------
请问结果集中[时间段]的计算逻辑是什么?
------解决方案--------------------
SELECT t.NAME,t.sl 'sl总和',rq1 + '--' + rq2 '时间段' FROM
(
SELECT [name],SUM(sl) 'sl', CONVERT(VARCHAR(19),MAX(rq1),20) 'rq1' , CONVERT(VARCHAR(19),MAX(rq2),20) 'rq2'
FROM test GROUP BY [name],CONVERT(VARCHAR(13),rq1,20),CONVERT(VARCHAR(13),rq2,20)
) t
结果:

------解决方案--------------------
你的时间段不应该是‘2014-08-01 13:00’-‘2014-08-01 13:20’吗怎么是‘2014-08-01 13:10’-‘2014-08-01 13:20’这个呀
------解决方案--------------------
这个应该能满足你的要求了,如果是楼上说的,就把 MAX改成Min
------解决方案--------------------
SELECT
name,
SUM(sl)AS sq总和,
convert(varchar(20),max(rq1),20)+'-'+convert(varchar(20),MAX(rq2),20)时间差 FROM #T3
GROUP BY DATEPART(hour,rq1),name