0

私はこのような問題を抱えていました:

今日からクリスマスまで何ヶ月?

SQL> SELECT MONTHS_BETWEEN (TO_DATE('2013/10/14', 'YYYY/MM/DD'),
  2  TO_DATE('2013/12/25', 'YYYY/MM/DD')) AS MONTHS_BETWEEN FROM DUAL;

MONTHS_BETWEEN
--------------
    -2.3548387

今、私はこの問題を抱えています:

フラッグ フットボール ゲームとゲスト スピーカーという名前のイベントの間に何ヶ月ありますか?

私が理解できない問題は、関連する日付が同じ列にあることです (FLAG FOOTBALL の場合は 1、GUEST_SPEAKER の場合は 2)。また、それらは「デュアル」のような非エンティティではなく、テーブルからのものです。

おそらく、次のように、選択ステートメント内に 'WHERE' 句をネストする方法があります。

Select TO_CHAR(EVENT_DATE(WHERE EVENT_NAME = UPPER(‘Flag FOOtball Game’) 
– TO_CHAR(EVENT_DATE(WHERE EVENT_NAME = UPPER(‘GUEST SPEAKER’)AS 
TIME FROM FOOTBALL_TO_SPEAKER;

イベントテーブルは次のとおりです。

SQL> select * from event;

  EVENT_ID   CLASS_ID EVENT_NAME                     EVENT_DAT T RAIN_DATE
---------- ---------- ------------------------------ --------- - ---------
         1          9 ASTRO Physics STAR GAZING      09-NOV-99 O
         2         10 Flag FOOtball Game             19-JAN-99 O 20-JAN-99
         3          1 Guest SPEAKER                  01-DEC-99 I
         4          8 Barney ViDeo                   01-SEP-99 I
         5         10 PICKUP SOCCER GAME             09-JUL-99 I 10-JUL-99
         6          2 Guest Speaker                  20-NOV-99 I

私は何をする必要がありますか?

4

3 に答える 3

0

必要な条件を使用して、このテーブル自体を結合するだけです。次に例を示します。

SELECT t1.EVENT_DAT - t2.EVENT_DAT FROM EVENT t1, EVENT t2
WHERE t1.EVENT_NAME = 'Flag FOOtball Game' AND t2.EVENT_NAME = 'Guest Speaker'
于 2013-10-15T08:25:47.060 に答える
0

最初の部分については、以下が正しいはずです。

SELECT trunc(MONTHS_BETWEEN (TO_DATE('2013/10/14', 'YYYY/MM/DD'), TO_DATE('2013/12/25', 'YYYY/MM/DD')) )AS MONTHS_BETWEEN FROM DUAL;


select trunc(MONTHS_BETWEEN(fg,gs)) as "difference in month"
from
(
select 
                 max(case when event_name = 'Flag FOOtball Game'
                     then event_dat
                 end) as FG,
                 max(case when event_name = 'Guest Speaker'
                           then event_dat
                 end)  as GS
from event
where event_name in ('Flag FOOtball Game','Guest Speaker')   
) 
;
于 2013-10-15T08:37:31.700 に答える