Как указано в Заголовке, мне нужно написать запрос для получения 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