求问题解决方法!sql难度大!有点挑战
有点复杂!
A表:
SQL code
AID Name Region
1 张三 东区
2 王二 西区
3 张毛 东区
4 王三 北区
B表:
SQL code
BID AID ShopName BeigionDate EndDate
1 1 慢点店铺 2011-1-11 2012-12-12
2 3 张三店铺 2011-1-11 2012-12-11
3 4 有人店铺 2011-1-11 2012-12-11
C表:
SQL code
CID BID Amount Date
1 1 2000 2012-4-12
2 1 5000 2012-4-15
3 2 4000 2012-4-2
需得到报表:(数据是随便填的)
区域 同比店铺数量 同比MTD 同比YTD 区域店铺数量 区域MTD 区域YTD
张三 2 -2% -10% 3 4% 10%
张毛
东区
王二
西区
王三
北区
All
解释来源:(人员下面有N店铺)
区域:显示的数据就是目前写在里面的格式。
同比店铺数量: B表对应C表有数据。(今年1,2,3,4(4是当前月,如果是10月,就依次下去比较)和去年1,2,3,4相比较都有数据。才算数量)C表的:Date
同比MTD:当前月(C表:Date)的数据(C表:Amount)除以上一年的这个月的数据(C表Amount)-1 (且当月不能没有数据)
同比YTD:截至目前月(C表:date)(比如现在是:1 2 3 4 )的数据(C表:Amount)除以对应上一年的数据-1 (且当月不能没有数据)
区域店铺数量:当前月数据(c表)不为空就算。
区域MTD:当前月C表数据(C表:Amount)相加除以上一年当月数据-1
区域YTD:截至目前月(C表:date)(比如现在是:1.2.3.4 的总和)的数据(C表:Amount)除以对应上一年的数据-1 (且当月不能没有数据)
有点复杂!求高手相助!
------解决方案--------------------貌似比我提的问题还复杂
路过~``````````
------解决方案--------------------尼玛,这些问题咋都这么变态
------解决方案--------------------楼上带勋章的,给我去瞅瞅问题咋解决
------解决方案--------------------关注这个帖子,MSSQL不借助外部工具,可以同时实现明细和统计功能?
------解决方案--------------------
-- 先构建基础数据视图
-- 关注地区、人员、月份、数量
create view vw_summaryas
select Region, Name, Mn, sum(amount) as Amount
from (
-- 各月各店铺的销售合计
select BID,
dateadd(month,datediff(month,0,[date]),0) as Mn,
sum(Amount) as amount
from tableC
group by BID, dateadd(month,datediff(month,0,[date]),0)
) as c
join tableB b on b.BID=c.BID
join tableA a on a.AID=b.AID
group by Region, Name, Mn
------解决方案---------------------- 再基于此视图编写若干函数给出人员月份,计算环比,同比..