首页 > 解决方案 > 如果其他列是真或假,如何从内部连接中获取列值或空值

问题描述

我有两个使用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

注意:安全名称不能重复,这就是为什么如果没有主要安全代码,它会显示为空。

标签: sql

解决方案


看起来您还没有添加您提到的整个查询(内部联接)。但是你需要使用case语句。

SELECT SecurityName, 
CASE WHEN PRIMARY='1' THEN SecurityCode ELSE NULL END AS SECURITY_CODE
FROM TABLE; 

推荐阅读