as 2008里关于维度排序问题

日期维度一般都是做成层级,这样在前段展示的时候比较方便,日期维度一遍粒度比较灵活,一般包括年、半年、季度、月、旬、日、

第一步:建立日期表,

---------建立日期对照表
create table 日期(日期 datetime primary key ,
月 as case replace(datename(month,日期),'0','')
when '1' then '一月'
when '2' then '二月'
when '3' then '三月'
when '4' then '四月'
when '5' then '五月'
when '6' then '六月'
when '7' then '七月'
when '8' then '八月'
when '9' then '九月'
when '10' then '十月'
when '11' then '十一月'
when '12' then '十二月'
else '0' end
,
季度 as ('第'+case datename(quarter,日期)
when '1' then '一'
when '2' then '二'
when '3' then '三'
when '4' then '四'
else '0' end
 +'季度'),
财年 as (datename(year,日期)+'财年'))


------------------------------------- 插入数据


declare @a int,@b datetime
set @b='2004-01-01'
set @a=0
while(@a<4000)
begin
insert into 日期(日期)
select @b

select @b=dateadd(day,1,@b) ,@a=@a+1
end

select * from 日期

上边是用计算列完成的计算,笔者比较懒,呵呵

第二步:打开as 2008,建立数据源,数据源视图,这个就不详细说了,建立维度,键列选择日期,属性包括,年,月,季度,日,建立好了以后我们在建立层次结构,这样是方便在前台的钻取,如下图:

 

这样子建立以后会发现出来的顺序是乱的,因为这里都是汉字,as引擎本身是按照ascci来排的,所以我们必须指定排序。

 

的师傅

 

 

在数据源视图上新建两列派生列,主要是为了排序用,

季度排序:case
季度
when '第一季度' then 1
when '第二季度' then 2
when '第三季度' then 3
when '第四季度' then 4
else 0 end

月度排序:

case 月
when '一月' then 1
when '二月' then 2
when '三月' then 3
when '四月' then 4
when '五月' then 5
when '六月' then 6
when '七月' then 7
when '八月' then 8
when '九月' then 9
when '十月' then 10
when '十一月' then 11
when '十二月' then 12
else 0 end

见下图:

 

 

然后月排序和季度排序添加月排序和季度排序的属性,在给维度添加属性的时候,我们发现AS2008和AS2005有点区别,AS2005可以直接把属性从数据源视图里拖拽到维度下边,而AS2008把维度属性这块独立出来,我们需要通过界面来设置,

在这里的元属性选择【季度】,相关属性我们选择【季度排序】,月度如上,详细见下图:

 

详细见下图:1

 

 

 

 

 

打开月和季度的属性窗口,在orderby选项里选择AttributeKey,在下边orderby的attributekey里选择月排序或季度排序见下图:

 

这样处理维度以后,就会按照你指定的顺序出来的:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值