sql - CASE WHEN 比较解析为 NULL
问题描述
写这个的最好方法是什么?
我正在使用 CASE WHEN 语句处理几个场景。当两者和学校都匹配时,返回 1。如果没有匹配,则匹配名称和学校 = NULL 并返回 2。如果仍然不匹配,则返回 0。
IE:
CASE WHEN (x.name = x.name and x.school = y.school) THEN 1
WHEN (x.name = x.name and x.school = compare and resolve to null if not matched) THEN 2
ELSE 0
问题 1:如何写第 2 行。——我想我已经解决了这个问题。
CASE WHEN (x.name = x.name and x.school = y.school) THEN 1
WHEN (x.name = x.name and y.school is null) THEN 2
ELSE 0
问题 2:一旦我弄清楚如何编写第 2 行的比较,分支 2 的真正解决方案将需要选择 2 个空学校值的最低层。在下图中,假设 name 和 school 不匹配,因此逻辑转到分支 2 比较(name 和 school 为空)。在这种情况下,组合有两种可能性 - 第 2 层和第 3 层。如何编写 THEN 参数来为分支 2 选择 twe 的最低层?
解决方案
这是你想要的吗?
case
when x.name = y.name and x.school = y.school then 1
when x.name = y.name and x.school is null and y.school is null then 2
else 0
end
如果两者都匹配,则第一个分支name
成功school
。第二个匹配name
s 相等且两个school
s 都有null
值。
推荐阅读
- flutter - Dart Initialise Super Constructor in Factory Named Constructor
- java - 计算 2 个姿势之间的方位角差
- c# - 如何在 ItemsControl 生成其容器之前或之后更改加载的主题资源字典,但不是在那个时候?
- json - 在 PI Java Mapping 中使用 GSON 将 XML 转换为 JSON
- php - chrome --headless 有时为空 pdf
- python - 在张量流中设置预训练权重的简单方法?
- c# - 为什么我的 Razor Page 方法没有被调用?
- sql - sql server 连接或替换,哪个更好(更快)
- python - 无法使用 Pycharm 创建 Conda 环境
- java - 如果 Connection 稳定,则使用 Android WorkManager 运行函数