2013-04-09 29 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。最大的SQL服務器沒有組通過

 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 2013-04-09 14:37:52

+0

如果callid在呼叫中,那麼只需在SELECT之後和StartTime之前添加CallID, – 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

而且試試這個:

選擇呼叫標識,開始時間,結束時間,QueryTime
從dbo.Calls如CLL
其中CLL.QueryTime =

(選擇從dbo.Calls其中dbo.Calls.StartTime = CLL頂部1 dbo.Calls.QueryTime。通過dbo.Calls.QueryTime遞減順序開始時間)

組由CLL.CallID,CLL.StartTime,CLL.EndTime,CLL.QueryTime
爲了通過CLL.StartTime - 你可以拒​​絕這一行