add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE balance
(
id INTEGER,
balance_date DATETIME,
balance INTEGER,
);
insert into balance values ( 1, '2018-10-01', 111 );
insert into balance values ( 1, '2018-10-02', 115 );
insert into balance values ( 12, '2017-10-01', 1134 );
insert into balance values ( 12, '2017-09-01', 159 );
insert into balance values ( 1, '2018-09-02', 130 );
insert into balance values ( 5, '2018-09-02', 150 );
6 rows affected
select * from balance;
id balance_date balance
1 2018-10-01 00:00:00.000 111
1 2018-10-02 00:00:00.000 115
12 2017-10-01 00:00:00.000 1134
12 2017-09-01 00:00:00.000 159
1 2018-09-02 00:00:00.000 130
5 2018-09-02 00:00:00.000 150
WITH bal AS (
SELECT
b.*,
row_number() OVER (PARTITION BY id ORDER BY balance_date DESC) r
FROM balance b
)
SELECT id, balance_date, balance FROM bal WHERE r = 1 or r = 2
ORDER BY id, balance_date desc
;
id balance_date balance
1 2018-10-02 00:00:00.000 115
1 2018-10-01 00:00:00.000 111
5 2018-09-02 00:00:00.000 150
12 2017-10-01 00:00:00.000 1134
12 2017-09-01 00:00:00.000 159
-- ПОСМОТРИТЕ как работает функция ROW_NUMBER() !!!
SELECT
b.*,
row_number() OVER (PARTITION BY id ORDER BY balance_date DESC) r
FROM balance b
id balance_date balance r
1 2018-10-02 00:00:00.000 115 1
1 2018-10-01 00:00:00.000 111 2
1 2018-09-02 00:00:00.000 130 3
5 2018-09-02 00:00:00.000 150 1
12 2017-10-01 00:00:00.000 1134 1
12 2017-09-01 00:00:00.000 159 2