2014-02-19 12 views
0

У меня возникли трудности, когда я пытаюсь сгруппировать, но с использованием порядка по заявлению.выпуск с группой по заказу by

Вот мой запрос

create table AllData(NoOfPerson int,NoOfMinutes int,StartTime Datetime); 

INSERT INTO AllData VALUES(1,2,GETDATE()), 
(0,3,GETDATE()+1), 
(3,4,GETDATE()+2), 
(2,5,GETDATE()+3), 
(0,6,GETDATE()+4), 
(3,7,GETDATE()+5), 
(2,8,GETDATE()+6); 

и выход из запроса

select NoOfperson,SUM(NoOfMinutes)NoOfMinutes,MIN(StartTime)StartTime from AllData 
group by NoOfperson,StartTime 
order by StartTime 

NoOfperson NoOfMinutes StartTime 
1    2 2014-02-19 15:44:52.617 
0    3 2014-02-20 15:44:52.617 
3    4 2014-02-21 15:44:52.617 
2    5 2014-02-22 15:44:52.617 
0    6 2014-02-23 15:44:52.617 
3    7 2014-02-24 15:44:52.617 
2    8 2014-02-25 15:44:52.617 

Но я хочу, выход должен быть как

первый

1 -- 2 
0 -- 9 
3 -- 11 
2 -- 13 

Как я могу получить этот выход ut?

ответ

3

попробовать обертывание запрос:

SELECT * 
FROM (SELECT noofperson, 
       Sum(noofminutes) NoOfMinutes, 
       Min(starttime) StartTime 
     FROM alldata 
     GROUP BY noofperson) t 
ORDER BY noofminutes ASC; 

или просто:

SELECT noofperson, 
     Sum(noofminutes) NoOfMinutes, 
     Min(starttime) StartTime 
FROM alldata 
GROUP BY noofperson 
ORDER BY noofminutes ASC; 
+0

Я пробовал это ... no working :( – Mahajan344

+0

Вы группируете NoOfperson и StartTime, а вы exepcting данные сгруппированы только с помощью NoOfperson - попробуйте еще раз (я отредактировал мой ответ) – ziollek

+0

Нет необходимости в производной таблице. 'ORDER BY' можно добавить после' GROUP BY'. –

0

Попробуйте это:

SELECT NoOfperson, NoOfMinutes FROM 
(
select NoOfperson,SUM(NoOfMinutes)NoOfMinutes,MIN(StartTime)StartTime from AllData 
group by NoOfperson 
) AS Data 
GROUP BY NoOfperson, NoOfMinutes, StartTime 
order by StartTime 
0
SELECT NoOfperson, SUM(NoOfMinutes) AS SumNoOfMinutes , MIN(StartTime)StartTime 
from AllData 
group by NoOfperson 
order by SumNoOfMinutes asc ; 
0

, что об этом,

select * , 
sum(NoOfMinutes)over(partition by NoOfPerson,NoOfPerson order by NoOfPerson) 
from @AllData