У меня есть следующая таблица, и я хотел бы сгенерировать данные, описанные ниже. «ХОЧУ» Я перепробовал несколько аналитических функций SQL (rank () over), но я всегда сталкиваюсь с препятствиями.Я буду признателен за любые идеи в отношении решения этой задачи
CREATE TABLE TABLEA (
id VARCHAR(2) ,
val1 VARCHAR(2),
val2 VARCHAR(2),
val3 VARCHAR(2),
dt_val VARCHAR(8)
)
;
-- --data
INSERT INTO TABLEA
(id, val1, val2, val3, dt_val)
VALUES
('1', '2', '3', '4', '20151011'),
('1', '2', '', '4', '20151012'),
('1', '2', '3', '4', '20151013'),
('2', '4', '3', '4', '20151101'),
('2', '4', '3', '4', '20151102'),
('2', '4', '', '', '20151103'),
('2', '4', '3', '4', '20151104'),
('3', '4', '3', '4', '20151110'),
('4', '4', '3', '4', '20151110'),
('4', '4', '3', '4', '20151111'),
('4', '4', '', '4', '20151112'),
('4', '4', '', '4', '20151113'),
('5', '4', '3', '4', '20151111'),
('5', '4', '3', '4', '20151112'),
('5', '4', '3', '4', '20151113'),
('5', '4', '3', '4', '20151114'),
;
ХОЧУ Я хочу следующий результат.Я хочу выбрать наименьшее (dt_val), если две последовательные строки совпадают.
Id val1 val2 val3 dt_val
------ ------ ------ ------ ----------------
1 2 3 4 20151011
1 2 (null) 4 20151012
1 2 3 4 20151013
2 4 3 4 20151101
2 4 (null) (null) 20151103
2 4 3 4 20151104
3 4 3 4 20151110
4 4 3 4 20151110
4 4 (null) 4 20151112
5 4 3 4 20151111