我有一个视图,该视图为b.emissor和B.indexador列返回一些空值。如果为空,则需要首先在表TB_CAD_RF中找到该值;如果仍然为空,则需要查询TB_CAD_RF_2。 我尝试以下逻辑,但不起作用。还尝试用案例陈述来思考问题,但无法弄清楚。
有人可以帮助我吗?
select A.NM_ATIVO, B.EMISSOR, B.INDEXADOR from VW_POSICAO as A
LEFT JOIN
TB_CAD_RF B on A.NM_ATIVO = B.CODIGO
where a.NM_EMISSOR is null
as C LEFT JOIN (
select C.EMISSOR, C.INDEXADOR from TB_CAD_RF_2 as D ON B.NM_ATIVO = C.CODIGO where C.EMISSOR is null)
答案 0 :(得分:4)
此模式:
SELECT
COALESCE( first.choice, second.choice, third.choice) as a
FROM
first
LEFT JOIN second on first.id = second.id
LEFT JOIN third on second.id = third.id
Coalesce返回传入的第一个非null,从左向右扫描
答案 1 :(得分:3)
这是一种方法。始终将两者结合在一起,并按期望的结果合并字段。
select A.NM_ATIVO,
EMISSOR = COALESCE(A.EMISSOR,B.EMISSOR),
INDEXADOR=COALESCE(A.INDEXADOR,B.INDEXADOR)
from VW_POSICAO A
LEFT JOIN TB_CAD_RF B on A.NM_ATIVO = B.CODIGO
LEFT JOIN TB_CAD_RF_2 D ON A.NM_ATIVO =D.CODIGO
答案 2 :(得分:1)
在ISNULL((从table1选择*),(从table2选择*))否则选择...的情况下
ISNULL类似于IIF语句,但是如果查询字段返回空值,它将尝试替代查询,或者您可以设置替代值。
语法可能有点不正确,有一段时间没有写此查询了,但是它应该使您走上正确的道路。 Google SQL ISNULL