我正在尝试根据日期范围计算排名;如果日期在范围之间,那么我想创建排名;否则,我想将其保留为空白/零。如果我必须编写多行查询,我可以实现此目的,但我必须在单例语句中执行此操作。
使用下面的代码在列中突出显示 Rank_coming 列,但我希望在 Rank_Needed 中突出显示值。
选择* , RANK () over (按 id 分区,按情况排序,日期在 '2023-01-01' 和 '2023-06-01 00:00:00' 之间,然后日期结束) 从表1
如何使用 case 语句 SQL 查询来实现此目的?
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;