如图,资产负债视图是事实表,损益表也是事实表。都包含年、月、组织、账簿信息。

SQL如何实现呢?

简单粗暴,事实事实表串事实表,Full Join

  1. select
  2. 损益视图.年
  3. ,损益视图.年月
  4. ,损益视图.期间
  5. ,损益视图.账簿名称
  6. ,损益视图.组织编码
  7. ,损益视图.组织名称
  8. ,损益视图.项目名称 损益项目
  9. ,损益视图.本期发生数 损益本期
  10. ,资产负债视图.项目名称 资产项目
  11. ,资产负债视图.年初数 资产年初
  12. ,资产负债视图.期末数 资产期末
  13.  
  14. from 损益视图
  15. full join 资产负债视图
  16. on 损益视图.年月 = 资产负债视图.年月
  17. and 损益视图.年 =资产负债视图.年
  18. and 损益视图.期间 = 资产负债视图.期间
  19. and 损益视图.账簿名称 = 资产负债视图.账簿名称
  20. and 损益视图.组织编码 = 资产负债视图.组织编码
  21. where 损益视图.账簿名称 ='蓝海电子公司主账簿'

SSAS 表格模式中借助视图模式看

不能直接事实表串事实表,必须通过中间的维度表来关联。

  1. SELECT
  2. NON EMPTY {Hierarchize(
  3. {[Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]}
  4. )
  5. }
  6. ON COLUMNS,
  7.  
  8. NON EMPTY {Hierarchize(
  9. {
  10. CROSSJOIN({[年月表].[时间].[年]}
  11. ,CROSSJOIN({[年月表].[月份].[月份]}
  12. ,CROSSJOIN( {[组织架构表].[组织编码].[组织编码]},
  13. CROSSJOIN({[组织架构表].[组织名称].[组织名称]}
  14. ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]}
  15. ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]})
  16. )
  17. )
  18. )
  19. )
  20.  
  21. )
  22.  
  23. }
  24. )
  25. }
  26. ON ROWS
  27. FROM [FinBPCube]

SSAS系列随笔

多事实表 SQL实现和SSAS中MDX实现的差异的更多相关文章

  1. [SQL]复制数据库某一个表到另一个数据库中

    SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 表1 FROM 表2 --复制表2如果只复制结构而不复制内容或只复制某一列只要加WHERE条件就好了 例子:SELECT * I ...

  2. SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

    --SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...

  3. 利用SQL语句查询数据库中所有表

    Oracle: SELECT * FROM ALL_TABLES;系统里有权限的表 SELECT * FROM DBA_TABLES; 系统表 SELECT * FROM USER_TABLES; 当 ...

  4. SQL Server R2 2008中的SQL Server Management Studio 阻止保存要求重新创建表的更改问题的设置方法

    在2008中会加入阻止保存要求重新创建表的更改这个选项.症状表现为修改表结构的时候会"阻止"你. SQL Server 2008“阻止保存要求重新创建表的更改”的错误的解决方案是本 ...

  5. 转发:使用sql命令查询视图中所有引用的基础表

    转自:使用sql命令查询视图中所有引用的基础表 使用sql命令查询视图中所有引用的基础表 之前有写过如何利用sql查询视图中所有引用的表发现这个方法并不能查出视图中所有的基础表,如果视图中有嵌套视图就 ...

  6. SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”

    原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询 ...

  7. SQL语句获取数据库中的表主键,自增列,所有列

    SQL语句获取数据库中的表主键,自增列,所有列   获取表主键 1:SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_U ...

  8. MS SQL Server Management Studio中提示不允许保长度出现不允许保存更改。您所做的更改要求删除并重新创建以下表

    在SQL Server Management Studio中直接修改正在连接的表结构会出现改不了的情况,如下图 解决方法:工具-选项-设计器--阻止保存要求重新创建表的更改,去掉对勾--确定即可

  9. 使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)

    1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip ...

随机推荐

  1. [Training Video - 1] [Selenium Basics] [What is Selenium]

    What is Selenium? Browser Automation Testings Tool: Mozilla IE 6,7,8 Google Chrome Opera 8,9,10 Safa ...

  2. ie7下 li多了4像素

    当li 设置了float 后,在ie7 下便会产生margin-bottom:4px的bug,即使设置margin-bottom为0也不能清除. 可以通过csshack 解决: 1:在ie7下 将he ...

  3. UVa 506 System Dependencies (细节问题)

    题意:输入几种指令,让你进行模拟操作,指令如下: DEPEND item1 item2 (item3 ...) 安装item1需要先安装item2(.item3……) INSTALL item1 安装 ...

  4. 续安装好composer和workerman之后;TP5运行workerman的操作

    TP5想要实现时时通讯:首先先安装好composer和workerman,我之前有写一篇安装的方法,在cmd里面安装:tp5手册上面有写cmd命令的代码:接下来是安装好后如何运行的: 首先在项目中建立 ...

  5. ARKit对安卓的提示 ARKit与Google Tango

    我们知道安卓是Google开发的,那么关于AR谷歌有哪些作为呢?就是开发了Google Tango,尽管Tango还未开源,但是用户可以免费使用,可是一般的安卓手机是无法运行的,它对硬件有要求,这对它 ...

  6. java并发编程实战:第八章----线程池的使用

    一.在任务和执行策略之间隐性耦合 Executor框架将任务的提交和它的执行策略解耦开来.虽然Executor框架为制定和修改执行策略提供了相当大的灵活性,但并非所有的任务都能适用所有的执行策略. 依 ...

  7. Oracle ERP View - fnd_global.apps_initialize

    在ORACLE APPLICATION FORM中已存储了数据,在客户端TOAD中查找其TABLE找到相关数据行,但当查找其VIEW时就无法找到数据. 原因ORACLE的权责及OU安全机制屏蔽问题. ...

  8. TestNG(一)——起步

    你可以从 http://testng.org/doc/documentation-main.html 获取信息. 一.简介 TestNG是test next generation的缩写,即下一代测试技 ...

  9. 打造自己的Sublime使用环境

    1.破解LICENSE(如果不是特穷还是买一个吧,不是特别贵,支持正版)----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-855 ...

  10. c++中的隐藏及重载、重写与隐藏的区别

    c/c++中的隐藏  举个栗子 class A { public : void fun1(int a, int b) { cout<<"abcd"<<end ...