[英]Sql Group By Max Value in one column
我一整天都在拔頭發,有人可以幫我。 我認為它可能很簡單,但我不能完全得到我想要的東西。
表中的數據如下所示
CallId ProblemDescription CurrentAction CurrentEngineer EventNumber
CON-00002 Respond to Call 0
WHS-00001 Respond to Call 0
WHS-00002 Respond to Call 0
WHS-00003 Respond to Call 0
WHS-00003 Fix Problem 1
WHS-00003 Problem Fixed 2
我想要做的是顯示具有最大事件編號的CallId的所有列。 即
CallId ProblemDescription CurrentAction CurrentEngineer EventNumber
CON-00002 Respond to Call 0
WHS-00001 Respond to Call 0
WHS-00002 Respond to Call 0
WHS-00003 Problem Fixed 2
但是,我無法弄清楚如何做到這一點。
目前我正在使用
Select CallId, MAX(ProblemDescription), MAX(CurrentAction), MAX(CurrentEngineer),
MAX(EventNumber) FROM [Table] GROUP BY CallId
這顯然如何為每個coloumn單獨返回最大值。 因此,在上面的情況下,CurrentAction列顯示Respond to Call
未Respond to Call
任何人都可以告訴我如何做到這一點???
謝謝
我假設您正在尋找DENSE_RANK
:
WITH CTE AS
(
SELECT
CallId,
ProblemDescription,
CurrentAction,
CurrentEngineer,
EventNumber,
Rank = DENSE_RANK() OVER (PARTITION BY CallId ORDER BY EventNumber DESC)
FROM dbo.TableName
)
SELECT
CallId, ProblemDescription, CurrentAction, CurrentEngineer, EventNumber
FROM
CTE
WHERE
RANK = 1
如果每個CallId
只需要一行,即使有多個具有相同的最大EventNumber
使用ROW_NUMBER
。
你想使用row_number():
select CallId, ProblemDescription, CurrentAction, CurrentEngineer, EventNumber
from (select t.*,
ROW_NUMBER() over (partition by callId order by eventnumber desc) as seqnum
from t
) t
where seqnum = 1
使用此代碼。 *僅在事件編號列上使用Max聚合。
SELECT CallID, Problem_Description, Current_Action, Current_Engineer, MAX( Event_Number ) FROM test.data GROUP BY CallID;
這可能對你有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.