Sql 表自联接用于年度比较
我很难在一行中自动加入一个数据表来提供逐年的结果 我的数据当前存储在sales表中,如下所示。我可以使用Postgres或sqlite3 我们(日期)|商店|类别| planu | planrev | merchu | merchrev 预期结果是: 我需要能够在最后4列中显示1/7/17的LY值 然后,我将把结果与为其他表复制相同查询的所有其他伙伴的结果合并 可以假设,本年度的所有数据均为we>1/1/18,以便与上一年度结果的364天前的日期相匹配 通过阅读其他帖子,我认为我可能需要设计一个CTE查询,我只是不知道从哪里开始 我希望这是清楚的Sql 表自联接用于年度比较,sql,postgresql,sqlite,Sql,Postgresql,Sqlite,我很难在一行中自动加入一个数据表来提供逐年的结果 我的数据当前存储在sales表中,如下所示。我可以使用Postgres或sqlite3 我们(日期)|商店|类别| planu | planrev | merchu | merchrev 预期结果是: 我需要能够在最后4列中显示1/7/17的LY值 然后,我将把结果与为其他表复制相同查询的所有其他伙伴的结果合并 可以假设,本年度的所有数据均为we>1/1/18,以便与上一年度结果的364天前的日期相匹配 通过阅读其他帖子,我认为我可能需要设计一
如果您有任何帮助,我们将不胜感激。看来您希望加入相同的商店和类别,以及一年中的同一个月和同一天。在PostgreSQL中如下所示:
select
'PartnerA' as channel,
cy.we as date,
cy.month,
cy.year,
cy.store,
'PartnerA ' || cy.store as ch_store,
cy.category,
cy.planu,
cy.planrev,
cy.merchu,
cy.merchrev,
ly.planu as planu_ly,
ly.planrev as planrev_ly,
ly.merchu as merchu_ly,
ly.merchrev as merchrev_ly
from sales cy
join sales ly on cy.store = ly.store and cy.category = ly.category
and cy.we - interval '1 year' = ly.we
;
这太完美了。我真的很感激你的提问。这是一个比我想象的简单得多的方法。我没有考虑间隔函数,它确实是缺失的一部分。很高兴帮助,谢谢你接受我的答案:)如果你还想要一个前一年没有匹配行的结果,请用<代码> >左外连接< /代码>替换<代码>连接/代码>,并且可能< <代码> L.PANUU <代码> >代码> CueSeCe(Ly.Primu,0)< /C>(和其他
ly
专栏类似。永远记住闰年;-)玩得开心!