MySQL查询根据财政年度动态获取数据

时间:2018-05-16 09:20:59

标签: mysql mysql-workbench

我希望根据财政年度(即4月和18月至3月19日)动态选择字段。 我在表中的数据完全如下所示:

ROWNO   YEAR    MONTH
1       2016    1
2       2016    2
3       2016    6
4       2017    7
5       2017    5
6       2018    4
7       2018    5
8       2018    6
9       2018    7
10      2018    8
11      2018    9
12      2018    10
13      2018    11
14      2018    12
15      2019    1
16      2019    2
17      2019    3
18      2019    3
19      2017    4
20      2017    1
21      2017    2
22      2018    3

我想得到2018-19财政年度如下所示的结果

ROWNO   YEAR    MONTH
6       2018    4
7       2018    5
8       2018    6
9       2018    7
10      2018    8
11      2018    9
12      2018    10
13      2018    11
14      2018    12
15      2019    1
16      2019    2
17      2019    3

我使用了Query SELECT * FROM rup_calendar WHERE YEAR BETWEEN YEAR(CURDATE()) AND YEAR(CURDATE())+1;  但无法得到确切的结果。

请给我查询以获得上面给出的结果。

1 个答案:

答案 0 :(得分:2)

鉴于你的数据,你的方法并不遥远

select rowno,year,month
from     t
where year * 100 + month between 
    case when month(now()) < 4 then (year(now()) - 1) * 100 + 3
    else year(now()) * 100 + 4
    end 
    and
    case when month(now()) < 4 then (year(now())) * 100 + 3
    else (year(now()) + 1)  * 100 + 4
    end

注意我已经计算了一个月份字段以便于比较。注意我还没有完全测试过这个,你应该用@变量替换now()进行测试。