如图,资产负债视图是事实表,损益表也是事实表。都包含年、月、组织、账簿信息。
SQL如何实现呢?
简单粗暴,事实事实表串事实表,Full Join
select 损益视图.年 ,损益视图.年月 ,损益视图.期间 ,损益视图.账簿名称 ,损益视图.组织编码 ,损益视图.组织名称 ,损益视图.项目名称 损益项目 ,损益视图.本期发生数 损益本期 ,资产负债视图.项目名称 资产项目 ,资产负债视图.年初数 资产年初 ,资产负债视图.期末数 资产期末 from 损益视图 full join 资产负债视图 on 损益视图.年月 = 资产负债视图.年月 and 损益视图.年 =资产负债视图.年 and 损益视图.期间 = 资产负债视图.期间 and 损益视图.账簿名称 = 资产负债视图.账簿名称 and 损益视图.组织编码 = 资产负债视图.组织编码 where 损益视图.账簿名称 ='蓝海电子公司主账簿'
SSAS 表格模式中借助视图模式看
不能直接事实表串事实表,必须通过中间的维度表来关联。
SELECT NON EMPTY {Hierarchize( {[Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]} ) } ON COLUMNS, NON EMPTY {Hierarchize( { CROSSJOIN({[年月表].[时间].[年]} ,CROSSJOIN({[年月表].[月份].[月份]} ,CROSSJOIN( {[组织架构表].[组织编码].[组织编码]}, CROSSJOIN({[组织架构表].[组织名称].[组织名称]} ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]} ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]}) ) ) ) ) ) } ) } ON ROWS FROM [FinBPCube]