如何解决等价于 case 返回表达式
我正在进行动态查询,例如:
....from tableC c
inner join tableD d on ...
之后,从表格的单元格中读取连接条件。我们称这个布尔表达式为 exprA:
from tableC c
inner join tableD d on exprA
现在,我想通过新表的存在来覆盖该行为。如果新表存在,则逻辑应考虑该表而不是原始表。因此,让我们将 exprB 定义为存在(从 newtable 中选择 1,其中适当的条件)并将 exprC 定义为在这种情况下使用的替代行为。我现在需要:
from tableC c
inner join tableD d on
case
when exprB then exprC
else exprA
end
不幸的是,case
不能返回表达式。我可以使用 (exprB and exprC) or (not exprB and exprA)
(获得多路复用器的共鸣),但我想避免编写 exprB 两次,通过 apply
给它一个别名,或者拆分查询(这可以说是最高效/正确的解决方案).
有什么技巧吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。