2017-09-11 3 views
0

列のデータがNULLの場合でもfNo列の結果をすべてのデータに戻すことはできますか?Sysdateを使用した動的データの表示 - Oracle SQL

現在のコード:

Select a.sNo, a.tCode, a.fno 
from airplane a, Scheduled_Flight s 
Where a.fno = s.fno or SDT >= trunc(sysdate); 

のOracle SQLからの出力例:

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 
0000002 A320       VA12190 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000004 A330       VA82723 
0000006 A330       VA82123 

私はフライト番号(FNO)は本日に予定されている便の欄に結果を表示したいです。今日は予定されていない他のフライトは、すべてのフライトをリストしながら、fno列にヌル値を返す必要があります。私がSQLに慣れていれば、どんな助けでも大歓迎です。

EDIT: 私は以下のようにすべてのSNOを表示したいだけSNO 0000003のFNOと0000005.今日に予定されていないされていない他の便でしょうWHERE SDT >= TRUNC (SYSDATE); を削除するときにこれが出力されます。

SQL> SELECT a.sNo, a.tCode, a.fno 
    2 FROM airplane a LEFT OUTER JOIN Scheduled_Flight s ON a.fno = s.fno; 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 

7 rows selected. 

EDIT 2:

SELECT a.sNo, a.tCode, a.fno 
    2 FROM airplane a LEFT OUTER JOIN Scheduled_Flight s ON a.fno = s.fno 
    3 AND SDT >= TRUNC (SYSDATE) 
    4 order by a.sno; 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 

EDIT 3: 私は次のように表示したいと思います。

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       
0000003 A330       VA82716 
0000004 A330       
0000005 A330       VA82722 
0000006 A330       
0000007 A330 

EDIT 4:これで、私はSDTでグループ化し、示されたSDTのFNOのみを表示できますか?

SNO  TCODE       FNO  SDT 
------- ------------------------------ ------- -------------------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 11/SEP/2017 21:59:00 
0000004 A330       VA82723 
0000005 A330       VA82722 11/SEP/2017 14:00:00 
0000006 A330       VA82123 
0000007 A330 

答えて

0

あなたはLEFT JOIN

SELECT a.sNo, a.tCode,s.fno 
    FROM airplane a LEFT OUTER JOIN Scheduled_Flight s ON a.fno = s.fno 
+0

使用する必要があります。これは今日だけのための便ではなく、スケジュールされていない他のフライトを返します。たとえば、今日は予定されていないフライトは、これらのフライトの列にfNoが空白/ヌルで表示する必要があります。 – Dave

+0

だからつまり、 'SDT> = TRUNC(SYSDATE)'は必要ありません。 –

+0

編集を参照してください。 – Dave

関連する問題