Oracle DB のクエリを作成する正しい方法を探しています。
(dateCol 列の) 一意の日付ごとに、dateCol2 の時刻部分が「17:30」よりも低い最後の行を選択する必要があります。
select * from table where dateCol between to_date('2013-01-01 00:00:00','YYYY-MM-DD H24:MI:SS') and to_date('2013-02-01 00:00:00','YYYY-MM-DD H24:MI:SS')
and id='myID'
and [MISSING PART = the last line such that timepart(dateCol2)<'17:30']
私は Oracle/SQL に非常に慣れていないので、私の質問には多くのことが欠けている可能性があります。リクエストがあれば何でも追加します。
編集:これまでのところ、私はこれを理解しました:
select * from (select table.*, row_number() over (order by dateCol2 desc) last_row from table
where dateCol between to_date('2013-01-01 00:00:00','YYYY-MM-DD H24:MI:SS')
and to_date('2013-02-01 00:00:00','YYYY-MM-DD H24:MI:SS')
and id='myID'
and to_char(dateCol2, 'hh24:mi') < '17:30')
where last_row = 1
group by dateCol
)