Я хочу получить статус NEW и тип DATA, всегда самую последнюю сумму для контракта, которая не является NULL.Получить значение из строк в одной таблице
CREATE TABLE mytable( Amount VARCHAR(4) NULL ,Status VARCHAR(5) NOT NULL ,Date DATE NOT NULL ,Type VARCHAR(4) NOT NULL ,MetaKey INTEGER NOT NULL ); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-01','DATA',6); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-02','DATA',7); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-03','DATA',8); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-04','DATA',9); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-05','DATA',10); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-06','DATA',11); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-07','DATA',12); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-08','DATA',13); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-09','DATA',14); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-10','DATA',15); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-11','DATA',16); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-12','DATA',17); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-13','DATA',18); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-14','DATA',19); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-15','DATA',20); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-16','DATA',21); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-17','DATA',22); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-18','DATA',23); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-19','DATA',24); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-20','DATA',25); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-21','DATA',26); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-22','DATA',27); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-23','DATA',28); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-24','DATA',29); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-25','DATA',30); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES ('150','TRANS','2017-01-26','DATA',31); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES (NULL,'NEW','2017-01-27','DATA',32); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES (NULL,'NEW','2017-01-28','DATA',33); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES (NULL,'NEW','2017-01-29','DATA',34); INSERT INTO mytable(Amount,Status,Date,Type,MetaKey) VALUES (NULL,'NEW','2017-01-30','DATA',35);
Ожидаемый выход являются:
+--------+--------+------------+------+---------+ | Amount | Status | Date | Type | MetaKey | +--------+--------+------------+------+---------+ | 150 | TRANS | 2017-01-01 | DATA | 6 | | 150 | TRANS | 2017-01-02 | DATA | 7 | | 150 | TRANS | 2017-01-03 | DATA | 8 | | 150 | TRANS | 2017-01-04 | DATA | 9 | | 150 | TRANS | 2017-01-05 | DATA | 10 | | 150 | TRANS | 2017-01-06 | DATA | 11 | | 150 | TRANS | 2017-01-07 | DATA | 12 | | 150 | TRANS | 2017-01-08 | DATA | 13 | | 150 | TRANS | 2017-01-09 | DATA | 14 | | 150 | TRANS | 2017-01-10 | DATA | 15 | | 150 | TRANS | 2017-01-11 | DATA | 16 | | 150 | TRANS | 2017-01-12 | DATA | 17 | | 150 | TRANS | 2017-01-13 | DATA | 18 | | 150 | TRANS | 2017-01-14 | DATA | 19 | | 150 | TRANS | 2017-01-15 | DATA | 20 | | 150 | TRANS | 2017-01-16 | DATA | 21 | | 150 | TRANS | 2017-01-17 | DATA | 22 | | 150 | TRANS | 2017-01-18 | DATA | 23 | | 150 | TRANS | 2017-01-19 | DATA | 24 | | 150 | TRANS | 2017-01-20 | DATA | 25 | | 150 | TRANS | 2017-01-21 | DATA | 26 | | 150 | TRANS | 2017-01-22 | DATA | 27 | | 150 | TRANS | 2017-01-23 | DATA | 28 | | 150 | TRANS | 2017-01-24 | DATA | 29 | | 150 | TRANS | 2017-01-25 | DATA | 30 | | 160 | TRANS | 2017-01-26 | DATA | 31 | | 160 | NEW | 2017-01-27 | DATA | 32 | | 160 | NEW | 2017-01-28 | DATA | 33 | | 160 | NEW | 2017-01-29 | DATA | 34 | | 160 | NEW | 2017-01-30 | DATA | 35 | +--------+--------+------------+------+---------+
Я попытался с крестом применить, но это отнимает много времени. Можно ли обойтись без креста?
Пожалуйста научиться форматировать ваши сообщения –
Последние средства? как 160 пришёл на 2017-01-26? Какова его логика? –
Все типы статуса NEW имеет значение Null в виде суммы. Они должны получить последнюю существующую сумму, то есть 160. Сумма - это просто значение, которое я получаю из файла каждый день. – vasdan