2017-02-08 19 views
-1

で日付範囲からデータを取得私はこのようにそれを行う、特定の日付範囲のデータを取得しようとしています:オラクル

select EntryID 
     min(dtUsedDate) dtFirstUsedDate, 
     max(dtUsedDate) dtLastUsedDate 
from tblEntrance e 
where e.dtUsedDate between to_date('2016-02-08 10:00:00', 'yyyy-mm-dd hh24:mi:ss') 
    AND to_date('2016-02-08 10:15:59', 'yyyy-mm-dd hh24:mi:ss') 

(dtFirstUsedDateとdtLastUsedDateは、外側の選択で呼び出さなっているので、ドン

私が得るのは、それらの日付/時刻の間だけである入り口(レコード)なので、dtFirstUsedDateとdtLastUsedDateの両方がその日付範囲の間にあります。しかし、私が必要とするのは、dtFirstUsedがその最大値と最小値の間にあるように、dtLastUsedがその最大値と最小値の間になければならないように、2つの値が独立していることです。

私の質問が分かりやすく、誰かが私を助けてくれることを願っています。

+1

は分とdtUsedDate' 'の最大は、ちょうど' WHERE'句で範囲の両端と思いませんか? –

+0

上記のクエリは機能しません。 – GurV

+0

@TimBiegeleisenはい、あなたが言うことはしますが、もし真ならば、他のケースを無視するようにクエリを修正する必要があります。そして、私がオラクルで新しいので、私はそれをどうやって行うのか分からない。 –

答えて

1

私はあなたがこのために探していると思います。..

SELECT e.EntryID 
     ,MIN(e.dtUsedDate) dtFirstUsedDate 
     ,MAX(e.dtUsedDate) dtLastUsedDate 
    FROM tblEntrance e 
GROUP 
    BY e.EntryID 
HAVING MIN(e.dtUsedDate) BETWEEN TO_DATE('2016-02-08 10:00:00', 'yyyy-mm-dd hh24:mi:ss') 
           AND TO_DATE('2016-02-08 10:15:59', 'yyyy-mm-dd hh24:mi:ss') 
    AND MAX(e.dtUsedDate) BETWEEN TO_DATE('2016-02-08 10:00:00', 'yyyy-mm-dd hh24:mi:ss') 
           AND TO_DATE('2016-02-08 10:15:59', 'yyyy-mm-dd hh24:mi:ss') 
+0

これは非常に勇敢な試みです。元の投稿のようなヒントがないときは、「グループ」で推測します。いずれにせよ、それが本当に必要条件だったなら、あなたは 'min(e.dtuseddate)> = ...'と 'max(e.dtuseddate)<= ...'をチェックする必要があります。必要なだけ多くのチェックを行います。 – mathguy