sql查询以显示具有0的

sql查询以显示具有0的,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我必须向司机展示2019年1月的行程和nr。我还需要展示2019年1月的0次旅行。 下面是查询,但它没有显示2019年1月的0次旅行 select d.driver_id, count (t.trip_id) from drivers d left join TRIPS t on t.DRIVER_ID = d.DRIVER_ID left join TRIPS_PICKUP tp on tp.DESTINATION_ID = t.DESTINATION_ID left join TRIP_A

我必须向司机展示2019年1月的行程和nr。我还需要展示2019年1月的0次旅行。 下面是查询,但它没有显示2019年1月的0次旅行

select d.driver_id, count (t.trip_id)
from drivers d left join  TRIPS t on t.DRIVER_ID = d.DRIVER_ID
left join TRIPS_PICKUP tp on tp.DESTINATION_ID = t.DESTINATION_ID
left join TRIP_ADDRESS ta on tp.DESTINATION_ID = ta.DESTINATION_ID
where t.TRIP_DATE>=to_date('2019/01/01','yyyy/mm/dd') and 
t.TRIP_DATE<=TO_DATE('2019/01/31','yyyy/mm/dd')
group by d.DRIVER_ID
我认为在哪里有问题,但我找不到。 我正在使用oracle sql developer

将条件移动到on子句并使用日期文字:

select d.driver_id, count (t.trip_id)
from drivers d left join
     TRIPS t 
     on t.DRIVER_ID = d.DRIVER_ID and
        t.TRIP_DATE >= date '2019-01-01' and
        t.TRIP_DATE < date '2019-02-01' left join
     TRIPS_PICKUP tp
     on tp.DESTINATION_ID = t.DESTINATION_ID left join
     TRIP_ADDRESS ta
     on tp.DESTINATION_ID = ta.DESTINATION_ID
group by d.DRIVER_ID;
请注意,我更改了日期比较的上限-小于1月1日。这在Oracle中尤其重要,因为日期可以包含时间组件,即使在查询表时无法看到它。此版本对于包含或不包含时间组件的数据是安全的。

将条件移动到on子句并使用日期文字:

select d.driver_id, count (t.trip_id)
from drivers d left join
     TRIPS t 
     on t.DRIVER_ID = d.DRIVER_ID and
        t.TRIP_DATE >= date '2019-01-01' and
        t.TRIP_DATE < date '2019-02-01' left join
     TRIPS_PICKUP tp
     on tp.DESTINATION_ID = t.DESTINATION_ID left join
     TRIP_ADDRESS ta
     on tp.DESTINATION_ID = ta.DESTINATION_ID
group by d.DRIVER_ID;

请注意,我更改了日期比较的上限-小于1月1日。这在Oracle中尤其重要,因为日期可以包含时间组件,即使在查询表时无法看到它。此版本对于包含或不包含时间组件的数据是安全的。

这起作用了!感谢您的日期比较,我不知道@Gordon Linoffthis有效!谢谢你的日期比较,我不知道@Gordon Linoff