【发布时间】:2016-04-25 12:11:12
【问题描述】:
我正在重写我们的一个内部财务系统。我正在设置的是这个新系统每个月都会对订单表进行快照,并在该快照的日期。这部分效果很好。
下一步是创建一个视图,其中将包含每个月的总计以及上个月的总计。
当我按团队和月份进行总计时,设置递归没有问题。我只是自然地加入团队,month=month-1(我为该月设置了一个单独的表,并带有一个身份以使生活更轻松)
我遇到的问题是,如果我尝试在进行连接的同时进行递归。我再次加入团队和一个月,但由于某种原因我最终以交叉加入。是否有一个简单的理由来查看导致交叉连接的原因?有人在我的逻辑中看到错误吗? 这是连接:
select SH1.month, SH1.Team,
sum(SH2.Monthly_SAMT) as BilledPrevious, sum(SH1.Monthly_SAMT) as BilledCurrent,
sum(SH1.Monthly_SAMT) - sum(SH2.MonthlyAnnualized_SAMT) BILLEDDIFF
from vw_SalesMonthly2 SH1 full outer join vw_SalesMonthly2 SH2
on SH1.team=SH2.team and SH1.month_index-1 = SH2.month_index
group by SH1.month, SH1.Team
order by 1 desc, 2 asc
【问题讨论】:
-
我认为你应该尝试递归 CTE。 technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx
标签: sql sql-server join recursion