sql - 如果其他列是真或假,如何从内部连接中获取列值或空值
问题描述
我有两个使用INNER JOIN
;加入的表。一个具有相同的 3 个安全名称,另一个是代码和主列的案例用户的寄存器。
Select S.SecurityName, SC.SecurityCode
from Securities S
INNER JOIN SecurityCodes SC ON S.SecurityId = SC.SecurityId
WHERE SC.UserId = 1
SecurityName SecurityCode Primary UserId
----------------------------------------------
C 10 1 1
I 20 0 1
S 30 1 1
我需要获取 Primary 为 true 的安全名称和安全代码,但如果 Primary 为 false(因此没有主安全代码),查询必须正常返回 Security Name 并且 SecurityCode 为 null。
预期的:
SecurityName SecurityCode
--------------------------
I NULL
C 10
S 30
注意:安全名称不能重复,这就是为什么如果没有主要安全代码,它会显示为空。
解决方案
看起来您还没有添加您提到的整个查询(内部联接)。但是你需要使用case
语句。
SELECT SecurityName,
CASE WHEN PRIMARY='1' THEN SecurityCode ELSE NULL END AS SECURITY_CODE
FROM TABLE;
推荐阅读
- apache-kafka - Apache Zookeeper 无法读取配置文件,尽管提供了一个
- java - Android Studio 3.1.3 Gradle 同步错误。无法下载 Gradle-Core.jar
- azure - 无法连接到 Azure 存储帐户文件共享
- ios - 如何修复 AppDelegate for Firebase Notifications 中使用的已弃用代码?
- r - 在单插槽、多核 CPU 上的 Windows 中使用 R 进行并行处理
- android - Android TextView.setText() 在最近的带有 SurfaceView 覆盖的三星手机上没有改变
- intellij-idea - 运行单元测试时如何让 IntelliJ 创建 Mocha 调试配置?
- selenium - RSelenium:清除输入字段
- orientdb - Orientjs - 更新删除问题
- django - Angular 6 http 调用到 Django 端点的 CSRF 令牌设置和通道