【问题标题】:Select all dates between two dates and display the unique count of inventory id选择两个日期之间的所有日期并显示库存 ID 的唯一计数
【发布时间】:2015-10-25 06:06:04
【问题描述】:

我正在使用 oracle db。我有 2 个表,特别是 Inventory 和 grounding_info。每个库存可以有多个接地信息或没有。表结构如下。

Inventory
---------              
Inventory_id


Grounding_info
--------------
Info_id
Inventory_id
Grounding_date

我想获取给定日期范围内每个日期的库存计数。如果某个日期没有库存,则该日期应显示为计数 0。

请帮忙.. 我尝试了以下查询:

select tble.dte,count(distinct(groundinginfo.INVENTORY_ID)) cmt from ATL_GROUNDING_INFO groundinginfo
outer join (
    SELECT TO_DATE('2015/01/01 12:00:00 A.M.' ,'YYYY/MM/DD hh:mi:ss A.M.') - 1 + rownum AS dte FROM all_objects groundinginfo
    WHERE TO_DATE('2015/01/01 12:00:00 A.M.' ,'YYYY/MM/DD hh:mi:ss A.M.') - 1 + rownum <= TO_DATE('2015/04/01 11:59:59 P.M.' ,'YYYY/MM/DD hh:mi:ss P.M.') 
) tble
on groundinginfo.DATE_TURNED_IN = tble.dte
group by tble.dte

但它返回错误:“ORA-00933: SQL 命令未正确结束”

【问题讨论】:

  • 那么为什么要用 mysql 标记呢?也就是说,数据显示问题通常最好在应用程序级别处理。

标签: sql oracle date


【解决方案1】:

试试这个查询:

SELECT tble.dte, COUNT(DISTINCT INVENTORY_ID) As cmt FROM ATL_GROUNDING_INFO groundinginfo
right join (
    SELECT TRUNC(TO_DATE('2015/01/01' ,'YYYY/MM/DD') - 1 + rownum) dte FROM DUAL
    CONNECT BY ROWNUM < 366 AND TRUNC(TO_DATE('2015/01/01' ,'YYYY/MM/DD') - 1 + rownum) <= TRUNC(TO_DATE('2015/04/01' ,'YYYY/MM/DD'))
) tble
on tble.dte = TRUNC(groundinginfo.DATE_TURNED_IN)
group by tble.dte
order by tble.dte ASC

【讨论】:

  • 好吧,我尝试使用以下查询 select tble.dte,count(distinct(groundinginfo.INVENTORY_ID)) cmt from ATL_GROUNDING_INFO groundinginfo external join ( SELECT TO_DATE('2015/01/01 12:00:00 AM','YYYY/MM/DD hh:mi:ss AM') - 1 + rownum AS dte FROM all_objects groundinginfo WHERE TO_DATE('2015/01/01 12:00:00 AM','YYYY/MM/DD hh :mi:ss AM') - 1 + rownum
  • 但是这个返回错误'ORA-00933: SQL 命令没有正确结束'
  • 当我使用右连接时,我得到的所有计数都为 0,即使该日期有库存条目
  • 对不起,我将其解释为标签中的 mysql 问题,您应该将标签更改为 oracle DB 并将上面的查询放入您的问题中。
  • @Shini 我已尝试修复您的 oracle 查询,但我没有很多经验。
猜你喜欢
  • 1970-01-01
  • 2020-05-01
  • 2018-12-26
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多