sql - 去年添加的 BigQuery 自加入,同时考虑了间隔年
问题描述
我正在尝试通过自加入将去年列添加到我的收入表中DATE_ADD(LYI.date, INTERVAL 1 YEAR)
。
但是,在间隔年(2021 年)之后的第二年 2 月 28 日,这一声明创造了 2 月 28 日的双倍记录。一份用于 28 日,一份用于间隔年的 2 月 29 日。虽然 Last Year 列确实给出了正确的值。我试图通过收入案例陈述来解决这个问题,但这似乎是一个丑陋的解决方案。
有没有人有更清洁的解决方案来解决这个问题?
SELECT DISTINCT
INV.date
,INV.year
,INV.Shipping_Country
,CASE
WHEN (
MOD(INV.year-1,4)=0
AND EXTRACT(MONTH FROM Date(INV.date)) = 2
AND EXTRACT(DAY FROM Date(INV.date)) = 28
)
THEN INV.revenue/2
ELSE INV.revenue
END
as revenueTEST
,INV.revenue
,LYI.revenue as revenue_LY
FROM INV
JOIN INV LYI
ON INV.date = DATE_ADD(LYI.date, INTERVAL 1 YEAR)
and INV.Shipping_Country = LYI.Shipping_Country
ORDER BY INV.date
日期 | 年 | 航运_国家 | 收入测试 | 收入 | 收入_LY |
---|---|---|---|---|---|
2020 年 2 月 28 日 | 2020 | 荷兰 | 15 | 15 | 12 |
2020 年 2 月 29 日 | 2020 | 荷兰 | 8 | 8 | 无效的 |
2021 年 2 月 28 日 | 2021 | 荷兰 | 22 | 44 | 15 |
2021 年 2 月 28 日 | 2021 | 荷兰 | 22 | 44 | 8 |
解决方案
推荐阅读
- neo4j - apoc.path.subgraphAll 不返回图表
- python - 如果文件不存在使用 os.walk
- android - 浮动动作按钮不支持图像?
- file-sharing - 如何从该 Android 设备访问连接到我的 android 热点的 windows pc 上的文件?
- python - 如何在 CSV 文件中绘制或显示特定列?
- php - 请提供有效的缓存路径 Laravel5.7
- php - Laravel JSON 输出格式
- azure - 部署的 REST API 总是给出 500 错误
- git - Bamboo + Git Azure DevOps =“致命:无法从远程存储库读取。”。对于 Git 子模块
- java - 从包含 3 通道像素信息的 3d 字节数组创建 java 位图图像