日期:2014-05-18  浏览次数:20476 次

TOPCount分组的问题
SSAS中,我现在有维度表:商品维(商品编号,品牌),仓库维(仓库名称),时间维(日期,月,年)
事实表为:发货表(日期,商品,仓库,数量)一天一个商品同一个仓库只会有一条记录
现在想取:每个月,每个仓库,发货数量排名在前10的商品及数量。
我用TOPCOUNT,好像只能指定某个仓库,再某个月的前10,因为现在要在SSRS里想全部显示,
也就是说要通过月和仓库进行分组,再取出前10的商品。
研究了TOPCOUNT好久,还是搞不清怎么分组,刚学BI,问的不恰当的地方,大家不要笑话,
很急,先谢谢大家了。

------解决方案--------------------
我也刚看,不太懂,只能帮顶。
多看看麦思琪的视频,还不错。
------解决方案--------------------
SQL code
--create table sp(id int,spname nvarchar(10)) 
--create table ck(ckname nvarchar(10))
--create table sj(d int,m int,y int)
create table fh(dt datetime,spname nvarchar(10),ckname nvarchar(10),sl int)
insert into fh select '2010-10-10','A','AA',200
insert into fh select '2010-10-10','A','BB',300
insert into fh select '2010-10-10','A','CC',125
insert into fh select '2010-10-11','B','AA',170
insert into fh select '2010-10-10','B','AA',220
go
select dt,spname,ckname,sl,rm as 排名 from (
select ROW_NUMBER() over(partition by dt,spname order by sum(sl)) as rm,dt,spname,ckname,sum(sl) as sl from fh
group by dt,spname,ckname
)t where rm <=10
go
drop table fh
/*
dt            spname  ckname  sl      排名
----------------------- ---------- ---------- ----------- --------------------
2010-10-10 00:00:00.000 A      CC    125    1
2010-10-10 00:00:00.000 A      AA    200    2
2010-10-10 00:00:00.000 A      BB    300    3
2010-10-10 00:00:00.000 B      AA    220    1
2010-10-11 00:00:00.000 B      AA    170    1

(5 行受影响)

*/