仅使用 case 语句使用 RANK/DENSE_RANK 对有效日期进行排名计算

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

我正在尝试根据日期范围计算排名;如果日期在范围之间,那么我想创建排名;否则,我想将其保留为空白/零。如果我必须编写多行查询,我可以实现此目的,但我必须在单例语句中执行此操作。

使用下面的代码在列中突出显示 Rank_coming 列,但我希望在 Rank_Needed 中突出显示值。

选择*
    , RANK () over (按 id 分区,按情况排序,日期在 '2023-01-01' 和 '2023-06-01 00:00:00' 之间,然后日期结束)
从表1

如何使用 case 语句 SQL 查询来实现此目的?

sql sql-server window-functions
1个回答
0
投票
SELECT Id, dates,
       CASE
           WHEN dates BETWEEN '2023-01-01' AND '2023-06-01' THEN RANK() OVER (PARTITION BY id ORDER BY dates)
           ELSE 0
       END AS rank_needed
FROM temp;

演示:https://dbfiddle.uk/uPEkTU9d

© www.soinside.com 2019 - 2024. All rights reserved.