sql - 选择包含 NULL 的 MAX RANK
问题描述
我试图MAX
从返回的行中选择排名,同时包括Award Date
字段中包含 NULL 值的行。我该怎么办?
SELECT
V.Name
,Selected
,SRV.SBID
,SRV.DateCreated
,SRV.Version
,[Awarded] = ARW.DateCreated
,[Rank] = CASE WHEN ARW.DateCreated IS NOT NULL THEN DENSE_RANK() OVER (PARTITION BY SRV.SBID ORDER BY ARW.DateCreated ) ELSE 0 END
FROM SRV
LEFT JOIN ARW ON ARW = SRV.ID
LEFT JOIN V ON V.ID = SRV.VALUE
WHERE SRV.SBID = 767
当前输出:
Name Selected ID Date Num Award Date Rank
AM Demo 1 767 2020-01-09 14:39:25.180 3 NULL 0
Ven Two 1 767 2020-01-09 14:39:26.383 3 2020-01-09 14:42:23.677 2
Ven Two 1 767 2020-01-09 14:39:26.383 3 2020-01-15 14:41:05.680 3
所需输出:
Name Selected ID Date Num Award Date Rank
AM Demo 1 767 2020-01-09 14:39:25.180 3 NULL 0
Ven Two 1 767 2020-01-09 14:39:26.383 3 2020-01-15 14:41:05.680 3
解决方案
在查询中再添加一个字段:
,[Rank2] = CASE
WHEN ARW.DateCreated IS NOT NULL
THEN DENSE_RANK() OVER (PARTITION BY SRV.SBID
ORDER BY ARW.DateCreated DESC)
ELSE 0
END
然后,在外部查询中,选择行Rank2 IN (0,1)
推荐阅读
- c++ - Xcode 11 中的 Xcode 词法或预处理器问题
- powershell - 仅获取 IPv4 的 Powershell 脚本
- bash - 通过 grep shell 脚本从子文件夹复制文件
- javascript - 尝试更新到 Expo SDK 34。遇到未定义的错误不是对象(评估“_expo.constants.manifest”)
- python - 如何从给定目录加载所有模块并从每个模块运行特定功能
- angular - 使用 [routerLink] 时,角度“错误:无法匹配任何路由。URL 段”,但它适用于 this.router.navigate
- c - glibc 的 atomic_forced_read 函数的目的是什么?
- lotus-domino - 无法从 Domino tmp 文件夹中删除文件 - 路径/文件访问错误
- jestjs - 如何测试嵌套组件的样式 jest-styled-components
- c++ - 增加指向动态数组的指针