0

我有一张桌子:

last_billed DATE DEFAULT "0000-00-00"
bill_interval varchar(10) DEFAULT "Monthly" (other values are: Quarterly, Half-yearly, Yearly)

我运行一个简单的查询,但它需要:

ORDER BY (last_billed + bill_interval)

这应该给出比 last_billed 日期晚 1 个月、3 个月、6 个月或 12 个月的日期,具体取决于 bill_interval 的值。现在,如果需要,我可以将 bill_interval 更改为任何内容,如果它可以使查询成为可能。

我不知道从哪里开始。因此,任何反馈都将一如既往地受到赞赏。

4

2 回答 2

1

尝试:

ORDER BY last_billed + 
    CASE bill_interval
        WHEN "Montly" THEN INTERVAL 1 MONTH
        WHEN "Half-Yearly" THEN INTERVAL 6 MONTH
        WHEN "Yearly" THEN INTERVAL 1 YEAR
    END

如果您将bill_interval列更改为几个月会更容易,那么您可以这样做:

ORDER BY last_billed + INTERVAL bill_interval MONTH
于 2013-09-19T22:12:04.410 回答
0
ORDER BY DateAdd("m", 
  case substring(bill_interval,1,1) when 'M' then 1 
                                    when 'Q' then 3 
                                    when 'Y' then 12 
  end, last_billed)
于 2013-09-19T22:21:19.627 回答