Проблема возникает с конкретной таблицей с 3 столбцами.Оператор SQL, не возвращающий значения
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
.
Почему все эти столицы? Пожалуйста, отредактируйте свой пост, это беспокоит, не читайте его. – vaso123
ПОЧЕМУ ВЫ СМОТРЕТЬ В США? Вместо этого покажите нам образцы данных вместе с ожидаемым результатом. Картинка стоит тысячи слов на SO. –
** MOTHER !!!!! ** * Марнус кричит на меня! * – Martin