Подсчет нескольких значений строк в SQL - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующая таблица:

Pic

Показывает число и год, если автомобиль использовался или нет, основываясь на месяце.А теперь написал бы запрос для определенного года, например

> where year = 2018 (Lets pretend it now February)

Мне нужен результат с 2018 года, когда автомобиль не используется.Например, для 2018 года это будет 3, потому что с этого момента (FEB) по Dez.2017 есть 3 следующих 0.Если появляется 1 -> прекратить считать.Если я заинтересован в 2017

> where year = 1.2017 

, то, конечно, не имеет значения, в каком месяце я нахожусь сейчас, потому что 2017 год уже закончился, поэтому он будет считать 1 (3 на рисунке, очевидно, неверно)

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Один метод - гигантское case выражение

select t.*,
       (case when greatest(jan, feb, . . . , dec) = 0 then 12
             when greatest(jan, feb, . . . , nov) = 0 then 11
             . . .
             when jan = 0 then 1
             else 0
        end) as result_i_need
from t;
0 голосов
/ 24 мая 2018

выберите количество (*) из таблицы, где год <= 2018 и сумма (monthA + monthB + monthC + ...) <= 3; </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...