我确信这是一个愚蠢的问题,但是在阅读完所有内容后,我无法弄清楚为 Where 子句创建具有后备逻辑的存储过程的正确方法。
我有以下查询:
SELECT FeeName, Amount, Category, VariableName
FROM client_rates WHERE state_abv = state_abvIN
AND Purchase= purchaseIN AND Category= CategoryIN And client_id=client_idIN AND
agent_id=agent_idIN AND ((lender_id=lender_idIN AND county=countyIN) OR (lender_id=lender_idIN
AND
county='NA') OR (lender_id=1 AND county=countyIN) OR (lender_id=1 AND county='NA'));
因为我使用了 OR,所以它会返回一个匹配所有 4 个条件的集合。我想要的是通过条件“回退”。
这意味着我希望它返回一个集合,其中 (lender_id=lender_idIN AND County=countyIN) 返回一个值。但是,如果它返回一个 NULL 集,则尝试下一个条件集 (lender_id=lender_idIN AND County='NA') 等等。
我不认为 CASE 可以解决这个问题,我曾经使用嵌套的 IF EXIST 语句,该语句有效但强制每个查询运行两次(必须有比这更好的解决方案)。
任何建议,并感谢您的帮助。