使用Sysdate显示动态数据 - Oracle SQL

时间:2017-09-11 07:19:41

标签: sql oracle oracle11g

即使列中的数据为空,是否可以将fNo列结果返回到所有数据?

当前代码:

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的新手。

编辑: 这是删除WHERE SDT >= TRUNC (SYSDATE);时的输出 我想显示下面的所有sNo,但只显示sno 0000003和0000005的fNo。不是今天没有安排的其他航班。

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.

编辑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

编辑3: 我想显示以下内容。

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

编辑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

1 个答案:

答案 0 :(得分:0)

您必须使用LEFT JOIN

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