当前年度销售额和上一年销售额相同 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 会自动将类型转换为浮点数(尽管我更喜欢编写显式类型转换)
早上好,
我希望将 '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 会自动将类型转换为浮点数(尽管我更喜欢编写显式类型转换)