如何解决如何在动态日期显示上一年
我有一个包含客户、产品、日期和数量/收入数据的数据库。我想创建两个新列,以根据日期/客户/产品显示上一年的销量和收入。
我尝试合并两个视图,一个具有日期(未更改),另一个视图创建一个 CTE,我在其中选择日期减去一年,并使用另一个选择语句,其中 VOL 和 REV 被重命名为 VOL_PY 和 REV_PY但数据不完整。基本上发生的事情是,如果上一年有数据,PY 数据只会拉动销量和收入(例如,如果客户在 2021 年没有销售产品但在 2020 年销售,则不会拉动 2020 年的 VOL_PY - 因为它在 2021 年没有销售)。如何让我的代码包含日期中的匹配项以及“当前”年份中没有数据的实例?
这就是我要去的地方: [带有新列的示例数据]
当前年份视图:
SELECT
CUSTOMER,PRODUCT,DATE,VOL,REV,0 AS VOL_HL_PY,0 AS REV_DOLS_PY,DATEADD(YEAR,-1,DATE) AS DATE_PY FROM dbo.vwReporting
上一年视图:
WITH CTE_PYFIGURES
([AUTONUMBER],CUSTOMER,DATE_PY
) AS
(
SELECT b.*,1,DATE) AS DATE_PY
FROM dbo.basetable b
)
SELECT
v.CUSTOMER,v.PRODUCT,v.DATE,0 AS v.VOL,0 AS v.REV,CTE.VOL_HL AS VOL_HL_PY,CTE.REV_DOLS AS REV_DOLS_PY,CTE.PERIOD_DATE_PY) AS PERIOD_DATE_PY
FROM dbo.vwReporting AS v
FULL OUTER JOIN CTE_PYFIGURES AS CTE ON CTE.CUSTOMER=V.CUSTOMER AND CTE.PRODUCT=V.PRODCUT AND CTE.DATE_PY=V.DATE
解决方法
您需要将当前年份的数据偏移到前一年,然后将其与当前数据合并,为“其他”度量设置零(VOL
和 REV
为前一年,{{1 }} 和 VOL_PY
为当前年份)。然后做聚合。这样,您将拥有当前或上一年的所有维度值。
REV_PY
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。