我的问题发生在具有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的数据。
发布于 2016-05-18 10:11:32
在WHERE中,尝试smth类似CCYYMM >(现在是减一年),尽管我不知道最后一部分的确切语法。
https://stackoverflow.com/questions/37296333
复制相似问题