[英]SQL Max Value of Column to choose which row is selected
當一個“ callid”有多個條目時,我選擇單行時遇到問題
在這種情況下,將選擇兩行:
Assignee maxTime
Jim Smith 11:31:05
James Smith 17:50:16
我只想選擇一個時間最長的行。
我想要的輸出:
Assignee maxTime
James Smith 17:50:16
這是我的代碼:
select Assignee, MAX(TimeResolv) as maxTime
from heat8..asgnmnt
where callid ='00539265'
and GroupName like '%cs%'
Group by Assignee
幫助將不勝感激。
您可以使用TOP
:
SELECT TOP 1 *
FROM heat8..asgnmntt t
ORDER BY t.timeResolv DESC
或使用NOT EXISTS()
效率較低:
SELECT * FROM heat8..asgnmntt t
WHERE NOT EXISTS(SELECT 1 FROM heat8..asgnmnt s
WHERE s.timeResolv > t.timeResolv)
或使用窗口函數ROW_NUMBER()
:
SELECT s.Assignee, s.TimeResolv
FROM (
SELECT t.*,
ROW_NUMBER() OVER(ORDER BY t.timeResolv) as rnk
FROM heat8..asgnmntt t) s
WHERE s.rnk = 1
ROW_NUMBER()
也可以通過對每個組的結果進行一次查詢來完成。
您可以使用子查詢。 您的子查詢看起來將與當前查詢完全一樣,但是您需要從中選擇前1個。
select TOP 1 Assignee, (TimeResolv) as maxTime
FROM (
select Assignee, MAX(TimeResolv) as maxTime
from heat8..asgnmnt
where callid ='00539265'
and GroupName like '%cs%'
Group by Assignee
)
ORDER BY TimeResolv DESC
編輯:不需要子查詢,但是如果您想使用與上面相同的代碼,則易於閱讀,或者對您有意義。 您可以繼續使用此方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.