求问题解决方法!sql难度大!有点挑战有点复杂!A表:SQL codeAIDNameRegion1张三东区2王二西区3张毛东区4王三
求问题解决方法!sql难度大!有点挑战
有点复杂!
A表:
SQL codeAID Name Region1 张三 东区2 王二 西区3 张毛 东区4 王三 北区
B表:
SQL codeBID AID ShopName BeigionDate EndDate1 1 慢点店铺 2011-1-11 2012-12-122 3 张三店铺 2011-1-11 2012-12-113 4 有人店铺 2011-1-11 2012-12-11
C表:
SQL codeCID BID Amount Date1 1 2000 2012-4-122 1 5000 2012-4-153 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
[解决办法]-- 再基于此视图编写若干函数给出人员月份,计算环比,同比..