我对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+)。但是,我无法一起列出这些名字。我可以为所有产品做什么吗?
非常感谢!!!
答案 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
现有的选择。