2012-03-18 13 views
1

最初の日付と最後の日付との差が7以下の同じorder_IDのすべての値を選択する必要がありますが、どのようにすればよいかわかりませんどのように私はこれを行う必要がありますいくつかの助けを与えることができますか?SQLの日数が7日未満

DBレイアウト:

+---------------+---------------------+ 
| order_ID  | date    | 
+---------------+---------------------+ 
|    1 | 2012-01-21 09:15:00 | 
|    1 | 2012-01-21 09:15:00 | 
|    2 | 2012-01-21 14:15:00 | 
|    3 | 2012-01-22 10:05:00 | 
|    3 | 2012-01-22 10:05:00 | 
|    4 | 2012-01-22 14:25:00 | 
|    5 | 2012-01-25 11:05:00 | 
|    6 | 2012-01-27 16:10:00 | 
|    6 | 2012-01-27 16:10:00 | 
|    7 | 2012-01-27 16:10:00 | 
|    8 | 2012-01-28 15:55:00 | 
|    9 | 2012-01-28 16:40:00 | 
|   10 | 2012-01-28 17:35:00 | 
|   10 | 2012-01-28 17:35:00 | 
|   10 | 2012-02-03 09:35:00 | 
|   12 | 2012-02-03 10:15:00 | 
|   13 | 2012-02-05 13:25:00 | 
|   14 | 2012-02-05 13:45:00 | 
|   15 | 2012-02-05 14:10:00 | 
|   15 | 2012-02-05 14:10:00 | 
|   16 | 2012-02-07 15:45:00 | 
|   17 | 2012-02-11 11:50:00 | 
|   18 | 2012-02-11 12:45:00 | 
|   19 | 2012-02-14 09:10:00 | 
|   19 | 2012-02-16 13:05:00 | 
|   19 | 2012-02-16 13:05:00 | 
|   20 | 2012-02-17 09:40:00 | 
|   21 | 2012-02-19 14:10:00 | 
|   21 | NULL    | 
|   22 | 2012-02-25 10:20:00 | 
|   23 | 2012-02-25 11:05:00 | 
|   24 | 2012-02-25 13:35:00 | 
|   25 | 2012-02-27 17:10:00 | 
|   26 | 2012-03-03 09:40:00 | 
|   27 | 2012-03-05 10:45:00 | 
|   28 | NULL    | 
|   29 | NULL    | 
|   29 | NULL    | 
|   29 | NULL    | 
|   30 | NULL    | 
|   30 | NULL    | 
+---------------+---------------------+ 

答えて

4

あなたはNULLを(?最大または最小日付値に合体)を処理する方法を決定する必要がありますが、これはあなたのクエリのための基本的な構造を与える必要があります。

select order_id 
from (
    select order_id, min(date) as mindate, max(date) as maxdate 
    from tbl 
    group by order_id) t 
where datediff(maxdate,mindate) <= 7 
+0

ありがとう、ありがとう、 しかし、なぜ(...)の後ろに "t"があるのですか? – Kiwi

+2

@Kiwiエイリアスです。 't'を使ってサブクエリの結果を参照することができます。カラム名のあいまいさを避けるために、複数のテーブル/サブクエリから選択するときに便利です。 – Vache

+0

あのような、ありがとう! – Kiwi