2013-04-09 5 views
3
CallID StartTime   EndTime     Querytime 
    1692 2012-11-20 11:52:00.000 2012-11-20 11:52:00.300 0.300 
    1693 2012-11-20 11:52:00.000 2012-11-20 11:52:00.100 0.100 
    1694 2012-11-20 11:52:00.000 2012-11-20 11:52:00.400 1.5 
    1695 2012-11-20 11:52:01.000 2012-11-20 11:52:01.400 3 
    1696 2012-11-20 11:52:01.000 2012-11-20 11:52:01.300 5 

Я хотел бы получить максимальное время запроса, сгруппированное по StartTime, как показано ниже, но я все еще хочу, чтобы CallID отображался.Max sql server без группы

 StartTime     MaxQueryTime 
    2012-11-11 19:04:07.000 0.300 
    2012-11-11 19:04:10.000 0.200 
    2012-11-11 19:08:48.000 0.300 
    2012-11-11 19:08:51.000 0.300 
    2012-11-11 19:09:27.000 0.100 

    SELECT  StartTime, MAX(Querytime) AS QueryTime 
    FROM   dbo.Calls 
    GROUP BY StartTime 
+2

Что вы хотите увидеть, совпадают ли два времени запроса за одно и то же время начала? – Mark

+0

Если callid находится в вызовах, просто добавьте CallID после SELECT и перед StartTime, – 2013-04-09 14:38:27

ответ

2
WITH records 
AS 
(
    SELECT CallID, StartTime, EndTime, QueryTime, 
      DENSE_RANK() OVER (ORDER BY QueryTime DESC) rn 
    FROM TableName 
) 
SELECT CallID, StartTime, EndTime, QueryTime 
FROM records 
WHERE rn = 1 
0
select CallID, StartTime, max(QueryTime) over (partition by StartTime) as QueryTime 
from (
    SELECT CallID, StartTime, MAX(Querytime) as QueryTime 
    FROM dbo.Calls 
    GROUP BY CallID, StartTime 
) t 
0

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

выберите CallID , Время_запуска, EndTime, QueryTime
из dbo.Calls, как ХЛЛ
, где CLL.QueryTime =

(Выбрать верхний 1 dbo.Calls.QueryTime от dbo.Calls, где dbo.Calls.StartTime = ХЛЛ. время_запуск заказ по dbo.Calls.QueryTime убыв)

группа по CLL.CallID, CLL.StartTime, CLL.EndTime, CLL.QueryTime
заказа по CLL.StartTime - вы можете отказаться от этой линии