2014-07-21 61 views
0

我試圖獲得每個呼叫的最短時間。每個呼叫可以有重要的部分,它都記錄在相同的呼叫ID上。我想要做的是罰款每個通話ID的最短時間,但即時通訊重複值,當我查詢一種方式,或者如果我查詢另一種方式,我只是得到最小值。獲取每個ID的最小值

我想能夠數按小時

所有的呼叫,這是我一直在玩嘗試並獲得唯一的呼叫ID和時間查詢結束了,但這個目前返回重複

例如:

CALLID 1 = 2014年7月4日16:37:22.043

CallId的2 = 2014年7月4日16:37:23.370

我要的只是從所謂的1

select t.callid, (select min(timein) from loggeddata t2 where t2.callid = t.callid and t2.timein > t.timein 
        ) as 'mintime' 
     from loggeddata t 

回答

2

你並不需要一個子查詢,只需使用GROUP BY定義分組表達式,並添加聚集的列中的值:

select t.callid, 
     min(timein) as 'mintime' 
from loggeddata 
GROUP BY callid 
+0

最後感謝這樣一個簡單的答案,這是一個更大的查詢的一部分,顯而易見的答案只是不突出我! – user3691566

0
select callid,min(timein) from loggedata group by callid; 
+0

感謝您的回答以及 – user3691566

+0

如果它對您有幫助,請將其標記爲答案:) – Torrezzzz

+0

對不起,我標記了首先給出答案的人,您只能有一個正確的答案,同樣的工作。 – user3691566

0
;WITH CTE AS 
(
select t.callid, (select min(timein) from loggeddata t2 where t2.callid = t.callid and t2.timein > t.timein 
        ) as 'mintime' 
     from loggeddata t 

) 

Select c.callid,c.mintime from (select 
      row_number() over (partition by mintime order by callid desc) as seqnum 
     from CTE)c 
where seqnum = 1 
+0

嗨,感謝這個答案,把它變成一個cte是我的下一個選擇,讓整體查詢更簡單,因爲它獲得了更多的零件給它,然後只是這個位,我沒有足夠的聲望來標記這個答案,儘管 – user3691566

+0

沒有問題..如果它給出瞭解決方案,你想要什麼,那就像獲得點:) – mohan111