在排序表中,结果末尾有多少条记录等于最后一项

问题描述 投票:0回答:1

我有一个包含

Sort
Status
字段的表。
我需要创建一个包含 2 个字段的查询:
LastStatus
Times
.
第一个字段显示(按排序排序)最后一条记录的状态。第二个显示表末尾有多少记录具有相同的值。

例子

当查询结果是这样的时候:

排序 状态
1 阿尔法
2 太棒了
3 查理
4 阿尔法
5 阿尔法
6 查理
7 阿尔法
8 阿尔法
9 阿尔法

预期结果:

最后状态 时代
阿尔法 3

谢谢!

sql-server tsql group-by
1个回答
0
投票

二读,这更像是一个空岛问题

示例或 dbFiddle

with cte as (
Select [Sort]
      ,[Status]
      ,Grp = row_number() over (order by Sort)
            -row_number() over (partition by [Status] order by Sort)
 From YourTable
 )
 Select top 1 with ties 
        [Status]
       ,Times = sum(1)
  From  cte
  Group By Grp,[Status]
  Order by max([Sort]) desc

结果

Status  Times
alpha   3
© www.soinside.com 2019 - 2024. All rights reserved.