当前年度销售额和上一年销售额相同 table?

Current Year Sales and Previous Year Sales in the same table?

早上好,

我希望将 'Previous Year Sales' 添加到同一周的 Teradata 拉取中,但我的编码失败了。我将编码以获得 week/year 销售额的基线是:

SELECT a."WEEK_NBR" AS "YearWeek"
, SUM(a."Sales") AS "CurrentYearSales"

FROM "SALESTABLE" AS a

这将导致:

YearWeek  CurrentYearSales

201901    ,499

201902    ,300

201903    ,360


...

202001    ,500

202002    ,000

202003    ,500

我希望能够在同一行的同一周获得上一年的销售额,如果上一年存在于数据中的话 table。这样完成的 table 看起来像:

YearWeek  CurrentYearSales PriorYearSales

201901    ,499           NULL

201902    ,300           NULL

201903    ,360           NULL
...

202001    ,500           ,499

202002    ,000           ,300

202003    ,500           ,360

当我搜索时,我所能找到的只是如何使用本周的数据来执行此操作,但是这是否可以用于 table 中的所有记录?

编辑:当您对数据求和时,您需要在聚合之前加入。

你需要一个自连接,假设 WEEK_NBR 是数字:

with cte as 
 (
   SELECT a."WEEK_NBR" AS "YearWeek"
    , SUM(a."Sales") AS "CurrentYearSales"
   FROM "SALESTABLE" AS a
   group by 1
 )
select ...
from cte as t1
left join cte as t2
on t2.YearWeek = t1.Ye arWeek- 100

正如@Andrew 指出的那样,这也适用于字符串,因为当您将数字添加到字符串或比较数字和字符串时,Teradata 会自动将类型转换为浮点数(尽管我更喜欢编写显式类型转换)