簡體   English   中英

Sql Group By Max Value在一列中

[英]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 CallRespond 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM