SQL语句没有返回任何值

时间:2016-05-18 10:03:19

标签: sql

我的问题出现在一个包含3列的特定表中。

itemnr --item number (int) 7 chars like 1111111
ccyymm --century year month (int) 6 chars like 201605
amount --amount of the specific item for that year month combo.

基本上我想创建一个表格,显示过去12个月的数量。

我使用以下代码创建了12个虚拟表

SELECT * 
FROM items 
WHERE ccyymm = year(now())||right('00'||month(now()),2) -1

这显示了where ccyymm = 201604的所有项目 而且效果很好。

问题在于,当我减去的月份超过当月时,我必须从年份中减去1,所以我使用了以下内容:

SELECT * 
FROM items 
WHERE ccyymm = (case 
                when month(now()) < 12 
                then year(now())- 1||right('00'||month(now()),2) 
                else year(now())||right('00'||month(now()),2) -12 
                end)

因此,如果我想获得12个月前的数据,这个月的数据少于12,那么它只会从一年中减去1,所以基本上它必须给我201505。它说我的SQL是有效的,但是当我在数据库中查看有ccyymm的数据时,它还没有返回任何值。

3 个答案:

答案 0 :(得分:2)

SELECT * FROM ITEMS WHERE CCYYMM = (year(now()) * 100 + month(now())) - 100

答案 1 :(得分:0)

您已将问题标记为MySQL和&amp; SQL。

如果您使用的是MySQL,那么您可以使用日期函数:

SELECT * FROM ITEMS WHERE CCYYMM = date_format(date_sub(now(),INTERVAL 6 MONTH), '%Y%m');

答案 2 :(得分:-2)

在WHERE中,尝试像CCYYMM&gt; (现在减去一年) 虽然我不知道最后一部分的确切语法。