我想在不改变业务逻辑的情况下简化下面的sql代码。在这里我提到了我想修改的postgresql代码。如何使用IF条件简化SQL代码。 (Postgresql)
SELECT IF(
(SELECT `rate` FROM `vat_rate` WHERE '2017-05-12' BETWEEN from_date AND to_date) is not null ,
(SELECT `rate` FROM `vat_rate` WHERE '2017-05-12' BETWEEN from_date AND to_date) ,
IF((SELECT `rate` FROM `vat_rate` WHERE from_date is null and '2017-05-12' < to_date) is not null,
(SELECT `rate` FROM `vat_rate` WHERE from_date is null and '2017-05-12' < to_date),
IF(
(SELECT `rate` FROM `vat_rate` WHERE to_date is null and '2017-05-12' > from_date) is not null,
(SELECT `rate` FROM `vat_rate` WHERE to_date is null and '2017-05-12' > from_date),
'not found'
)
)
) as rate
SQL没有'if'语句。反引号对于SQL标识符也是非法的。请[编辑]你的问题,并解释你正试图解决的实际_problem_(而不是向我们扔一堆无效的SQL),并添加一些样本数据和基于这些数据的预期输出。 _Formatted_文本,请[无屏幕截图](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-问题/ 285557#285557) –
注意:通过使用-infinity和+ infinity作为from_date和to_date的默认值,可以避免这种混乱。 – joop