我想在不改變業務邏輯的情況下簡化下面的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