我正在使用Oracle DB。 我有一个像
这样的静态查询SELECT * FROM TESTSCHEMA.TABLE_A WHERE LOAN_ID = :LOAN_ID
条件来自表的其余部分。
现在,我们遇到了一个场景,如果TABLE_A中的一列为NULL,我们需要引入一个新表,我需要从TABLE_B中获取值 我们不是要更改代码或部署代码,而是可以在表中进行更新。
SELECT
*
FROM
TESTSCHEMA.TABLE_A
WHERE
LOAN_ID = :LOAN_ID
AND
(
/* if COLUMNA is NULL in TABLE_A
then i need to pull value from TABLE_B in the same select statement */
)
答案 0 :(得分:1)
我的解释... 如果您想限制基于columnA的返回值,而该值具有一个值,但是没有值(NULL)时,请使用表B中的columnB ...进行限制;然后合并&子查询即可。
或者您可以将整个子查询替换为标量函数并调用它。
SELECT *
FROM TESTSCHEMA.TABLE_A
WHERE LOAN_ID = :LOAN_ID
AND COALESCE(COLUMNA,(SELECT ColumNName
FROM table_B
WHERE [Some Limits to get 1 record always]) = DesiredValue
ColumnName
DesiredValue
。或者...
SELECT *
FROM TESTSCHEMA.TABLE_A
WHERE LOAN_ID = :LOAN_ID
AND COALESCE(COLUMNA,GetBValueWhenAValueNull(Paramaters?)) = DesiredValue
但是,这将需要更改部署/代码...不用猜测
答案 1 :(得分:0)
您可以做的是从tableA中删除NULL值
UPDATE TABLE_A
SET value = (SELECT TABLE_B.value
FROM TABLE_B
WHERE TABLE_A.LOAN_ID = TABLE_B.LOAN_ID )
WHERE LOAN_ID = :LOAN_ID
AND value is NULL