Teradata:为历史数据创建行和内容

时间:2017-07-24 22:45:19

标签: teradata

我对Teradata很新。我想知道Teradata是否允许我执行以下功能。我有一个产品A,其实际成交量历史从2016年6月6日到2017年7月24日(今天)。

Date               Volume
10/06/2016         10
.                  .
.                  .
.                  .
07/24/2017         50

当我提取此产品的实际数据时(代码:从20161006和20170724之间的数据库中选择A.volume),如果我想添加2016010-20161005行并使其卷为“0”,我该如何编写代码“?

Date               Volume
01/01/2016         0
01/02/2016         0
.                  .
.                  .
.                  .
10/05/2016         0
10/06/2016         10
.                  .
.                  .
.                  .
07/24/2017         50

我有多个需要该功能的产品(1000+)。但是,我无法一起列出这些名字。我可以为所有产品做什么吗?

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

这会创建缺少的行:

-- find the range of missing dates and expand it to one row per product/date
SELECT product, Begin(pd), 0 AS volume
FROM 
 ( 
   SELECT
      product, 
      Min(datecol) AS pd_end,
      -- double cast needed as LEAST is not implemented for DATEs 
      Cast(Least(Cast(pd_end AS INT)
                ,Cast(DATE '2016-10-01' AS INT)) AS DATE) AS pd_begin
   FROM inventory AS i
   GROUP BY 1
   -- only those with missing dates
   HAVING pd_end > pd_begin
 ) AS dt
EXPAND ON PERIOD (pd_begin, pd_end) AS pd

现在UNION ALL现有的选择。