我有一张桌子:
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)
根据bill_interval的值,这应该给出一个比last_billed日期更远的1个月,3个月,6个月或12个月的日期。 现在,如果需要,我可以将bill_interval更改为任何内容,如果它可以使查询成为可能。
我不知道从哪里开始。因此,任何反馈都会一如既往地受到赞赏。
答案 0 :(得分: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
答案 1 :(得分: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)