MySQL запрос для идентификации записи, имеющей только одно значение c в месяц - PullRequest
0 голосов
/ 09 мая 2020

Как указано в Заголовке, мне нужно написать запрос для получения c строк (список серийных номеров), которые имеют только один статус, который является статусом «истек» в каждом месяце (месяцы будут рассчитываться по end_time). Например: Моя таблица:

sr_num, start_time, end_time  , renew_date, status
s1    , 15-01-2016, 15-01-2017, 15-01-2016, purchase
s1    , 15-01-2016, 15-01-2017, 15-01-2016, expired
s2    , 15-01-2016, 15-01-2017, 15-01-2016, purchase
s2    , 15-01-2016, 15-01-2017, 15-01-2016, expired
s2    , 20-01-2017, 20-01-2018, 20-01-2017, renew
s3    , 15-01-2016, 15-01-2017, 15-01-2016, purchase
s3    , 15-01-2016, 15-01-2018, 10-01-2017, extends
CREATE TABLE test (
  sr_number CHAR(20),
   start_time DATE NOT NULL, 
  end_time DATE, 
  renew_date DATE,  
  status CHAR(20)
);
INSERT INTO `test` 
VALUES
('s1', '2016-01-15', '2017-01-15', '2016-01-15', 'purchase'),
('s1', '2016-01-15', '2017-01-15', '2016-01-15', 'expired'),
('s2', '2016-01-15', '2017-01-15', '2016-01-15', 'purchase'),
('s2', '2016-01-15', '2017-01-15', '2016-01-15', 'expired'),
('s2', '2017-01-20', '2018-01-20', '2017-01-20', 'renew'),
('s3', '2016-01-15', '2017-01-15', '2016-01-15', 'purchase'),
('s3', '2016-01-15', '2018-01-15', '2017-01-10', 'extends');

Условия:

  • «Группировать по sr_num, end_times»
  • статус должен истекать только каждый месяц.

Результатом должна быть только одна строка s1, 15-01-2016, 15-01-2017, 15-01-2016, срок действия истек

Образец таблицы : https://www.db-fiddle.com/f/bHpAAXRAVRJmkxsNDFNcwy/0

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