-- generate some data
DROP TABLE tmp.orders;
CREATE TABLE tmp.orders
(id INTEGER NOT NULL
, odate DATE NOT NULL
, payload VARCHAR
)
;
ALTER TABLE tmp.orders ADD PRIMARY KEY (id,odate);
INSERT INTO tmp.orders(id,odate,payload) VALUES
(1, '2011-10-04' , 'one')
, (1, '2011-10-24' , 'two')
, (1, '2011-10-25' , 'three')
, (1, '2011-10-26' , 'four')
, (2, '2011-10-23' , 'five')
, (2, '2011-10-24' , 'six')
;
-- CTE to the rescue ...
WITH sel AS (
SELECT * FROM tmp.orders
WHERE odate BETWEEN '2011-10-23' AND '2011-10-24'
)
SELECT * FROM sel s0
WHERE NOT EXISTS (
SELECT * FROM sel sx
WHERE sx.id = s0.id
AND sx.odate > s0.odate
)
;
결과 :
DROP TABLE
CREATE TABLE
NOTICE: ALTER TABLE/ADD PRIMARY KEY will create implicit index "orders_pkey" for table "orders"
ALTER TABLE
INSERT 0 6
id | odate | payload
----+------------+---------
1 | 2011-10-24 | two
2 | 2011-10-24 | six
(2 rows)
그것이 내가 말하려고했던 것입니다. 모두가 그 그룹을 가져 간다. –
'OrderNum'이 순차 값이라고 가정하면 생성 순서가 날짜 순서와 일치하지 않을 수 있습니다 (예 : OrderDate가 생성되었을 때가 아니라 주문이 완료 될 때 표시 될 수 있음) 그리고 최종 결정 시간에 관심이 있습니다.) –