繁体   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