我有一个带有vat列、开始日期和结束日期的表。我有两排。标准条目 0000-00-00
作为开始日期和结束日期,另一行有开始日期 2020-06-01
最后一天呢 2020-12-31
如果今天的日期介于开始日期和结束日期之间,我希望选择第二行的vat,否则选择标准vat 0000-00-00
应选择
这是我的table:
我试过了
SELECT *
FROM taxes
WHERE (CASE WHEN start_date < "2020-06-06"
AND end_date > "2020-06-06" THEN 1
ELSE 0
END) = 1
但我不知道如何表述else的情况,也不知道它是否能像这样工作
4条答案
按热度按时间5vf7fwbs1#
你可以用
order by
以及limit
为此:其思想是第一个条件得到“default”值。第二个条件得到匹配条件。然后对这两行进行排序,因此匹配条件将是第一行(如果有)。
jchrr9hc2#
也许有办法用你建议的“0000-00-00”日期作为起点和终点,但在我看来,如果你单独处理时间跨度,你运行的船会干净得多。e。列出“例外期”前后的日期范围,如:
通过这种方式,您可以非常清楚地记录哪些费率适用于以下情况。查询本身变得很简单,请参见上文并查看我的演示:https://rextester.com/ylyuu53617
k0pti3hp3#
o7jaxewo4#
您可以找到当前日期的记录,然后将此集合与按“0000-00-00”筛选的源表合并,不包括此集合中的国家代码