2017-03-07 10 views
0

フィールドpkstartDateendDateなどのデータベーステーブルavailableTimeslotがあります。午前9時00分00秒から午後06時00分00秒に開始Oracle SQLクエリーについて

PK startDate    endDate 
1. 2017-03-07 09:00:00 2017-03-07 18:00:00 
2. 2017-03-07 18:00:00 2017-03-07 21:00:00 
3. 2017-03-08 09:00:00 2017-03-08 18:00:00 

レコードは、午後06時00分00秒夜十一時00分00秒にはそれを示す一方は午後の時間帯

で、朝の時間帯であることを示し

利用可能なタイムスロットの日付(例えば、2017-03-06、2017-03-08)を格納し、これは顧客が1つを選択するために利用可能である。

ご注文日の翌日から正確に10のタイムスロットを取得するために1つのクエリを使用できますか?

私は2016年3月7日で製品を注文する場合は、クエリが12として

2017-03-08 09:00:00 
2017-03-08 18:00:00 
2017-03-09 09:00:00 
2017-03-09 18:00:00 
2017-03-10 ... 
2017-03-11 ... 
2017-03-13 ... 

は、テーブル内の祝日とではありません返します。

要するに

、それは(午前と午後のセッションを持つ毎日と5日)10日を返します

発言:あなたは、利用可能なタイムスロットの日付が順序であるが、連続した

+0

あなたの質問を編集し、サンプルデータと希望する結果を提供してください。 –

答えて

0
select available_date 
from (select available_date, row_number() over (order by available_date) as rn 
     from your_table 
     where available_date > :order_date 
     ) 
where rn <= 5; 

:order_dateバインド変数である - インターフェースを介してユーザー/顧客が入力した日付。

0

ではないかもしれないしたいですか1人の顧客に対して5?

select ts.* 
from (select ts.* 
     from customer c join 
      timeslots ts 
      on ts.date > c.orderdate 
     where c.customerid = v_customerid 
     order by ts.date asc 
    ) ts 
where rownum <= 5 
+0

あなたの答えをありがとうが、私のクエリは1つのテーブルを満たす必要があります –

関連する問題