创建一个与数千条记录关联的SQL报告

时间:2019-01-18 14:59:55

标签: sql oracle

我是Oracle SQL的新手,我正在尝试执行以下操作:

我列出了仅在一年中的某些星期内销售的产品。 我只是想创建一个完整的年度销售报告,并在那些周内将零销售收入填满零,但保留产品ID作为标识符。

尝试创建该报告,我开始尝试创建一个包含一年中所有星期和产品ID的表格,问题是有数千种产品。我正在尝试获得类似的东西:

WEEK_YR   PRODUCT_ID
------    ----------
2018011   Product 1
2018012   Product 1
...
2018053   Product 1
...
2018124   Product 1
...
2018011   Product 2
2018012   Product 2
...
2018053   Product 2
...
2018124   Product 2

然后每周将此表与sales表连接起来,在该表的空周中放入0。

在创建第一个表格时,我需要您的帮助,我只使用带有产品ID的表格进行计数,而其他表格则使用去年的星期列表

谢谢!

1 个答案:

答案 0 :(得分:0)

  

在创建第一个表时,我要求您提供帮助...

您不需要为此创建一个持久表。从Oracle 9.2开始,您可以使用CTE(公用表表达式)。在下面的示例中,cte w是您要寻找的那个:

with x as ( --- cte that generates numbers from 1 to 52
  select 1 as n from dual
  union all
  select n + 1 from x where n < 52
),
w as ( --- cte that generates the week_yr
  select 2018000 + n as week_yr from x
)
select -- main query now.
  w.week_yr,
  p...
from w
left join products p on p.week_yr = w.week_yr
where ...
group by ...

在上面的查询中,cte x生成从1到52的数字。然后cte w生成您需要的week_yr值。

最后,主查询可以执行您想要的操作。