用友财务总帐(GL)模BI数据ETL分析
业务需求,如下面的:
现在用友总帐一家公司BI分析案例。
/*
Sql Server2012使用作业设置定时任务,为了保证有一天运行时间
*/
/*
意temp1表里一定要保证要有记录,否则以temp1 来 left join就出现为空的情况。
*/
/*
Step 1: 把全部的数据库列表都插入到BI数据库的DBLIST表里
*/
USE BI;
/*
drop table BI.DBO.TEMP1;
drop table BI.DBO.TEMP2;
drop table BI.DBO.TEMP3;
drop table BI.DBO.TEMP4;
drop table BI.DBO.TEMP5;
drop table BI.DBO.TEMP6;
drop table BI.DBO.TEMP7;
*/
truncate table BI.DBO.DBLIST;
SELECT * FROM BI.DBO.DBLIST;
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_103_2010','公司名称1');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_103_2011','公司名称1');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_103_2012','公司名称1');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_103_2013','公司名称1');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_103_2014','公司名称1');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_105_2010','公司名称2‘);
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_105_2011','公司名称2);
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_105_2012','公司名称2');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_105_2013','公司名称2');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_105_2014','公司名称2');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_106_2010','公司名称3’);
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_106_2011','公司名称3');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_106_2012','公司名称3');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_106_2013','公司名称3');
insert into BI.DBO.DBLIST(DB_CODE,DB_COMPANY_NAME) VALUES ('UFDATA_106_2014','公司名称3');
/*
Step 2: 清空统计表里的记录,方便又一次插入,注意设置BI数据库不记录日志的形式
*/
truncate table BI.DBO.CLB;
truncate table BI.DBO.CWB;
truncate table BI.DBO.RCSHB;
truncate table BI.DBO.RSB;
truncate table BI.DBO.TDJS;
truncate table BI.DBO.ZJB;
/*
Step 3: 循环选择数据库,插入BI.DBO.CLB
*/
declare @DB_CODE char(50)
declare @DB_COMPANY_NAME char(100)
declare @SQL_STRING varchar(8000)
declare table_cursor cursor for select DB_CODE,DB_COMPANY_NAME from BI.DBO.DBLIST
open table_cursor
fetch next from table_cursor into @DB_CODE,@DB_COMPANY_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
/*
差旅表 CLB
*/
set @SQL_STRING='select ' +''''+ '差旅表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'DomesticTravel'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp1 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660214'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '差旅表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'OverseasTravel'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp2 from '+ rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660213'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '差旅表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'Entertainment'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp3 from '+ rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660223'+''''+';'
set @SQL_STRING=@SQL_STRING+' insert into BI.DBO.CLB(GLType,CompanyName,DomesticTravel,OverseasTravel,Entertainment,iYPeriod,iperiod,iyear)'
set @SQL_STRING=@SQL_STRING+' select BI.DBO.temp1.GLType,BI.DBO.temp1.CompanyName,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.DomesticTravel,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp2.OverseasTravel,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp3.Entertainment,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iYPeriod,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod,BI.DBO.temp1.iyear from BI.DBO.temp1 left join BI.DBO.temp2 on'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp2.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp2.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp2.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp3 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp3.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp3.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp3.iYPeriod;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp1;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp2;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp3;'
exec(@SQL_STRING)
print @SQL_STRING
/*
財务表 CWB
*/
set @SQL_STRING='select ' +''''+ '財务表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'BankCharges'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp1 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660301'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '財务表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'InterestIncome'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp2 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660302'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '財务表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'InterestExpenses'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp3 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660303'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '財务表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'IncomeTaxes'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp4 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'6801'+''''+';'
set @SQL_STRING=@SQL_STRING+' insert into BI.DBO.CWB(GLType,CompanyName,BankCharges,InterestIncome,InterestExpenses,IncomeTaxes,iYPeriod,iperiod,iyear)'
set @SQL_STRING=@SQL_STRING+' select BI.DBO.temp1.GLType,BI.DBO.temp1.CompanyName,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.BankCharges,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp2.InterestIncome,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp3.InterestExpenses,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp4.IncomeTaxes,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iYPeriod,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod,BI.DBO.temp1.iyear from BI.DBO.temp1 left join BI.DBO.temp2 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp2.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp2.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp2.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp3 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp3.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp3.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp3.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp4 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp4.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp4.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp4.iYPeriod;'
set @SQL_STRING=@SQL_STRING+'drop table BI.DBO.temp1;'
set @SQL_STRING=@SQL_STRING+'drop table BI.DBO.temp2;'
set @SQL_STRING=@SQL_STRING+'drop table BI.DBO.temp3;'
set @SQL_STRING=@SQL_STRING+'drop table BI.DBO.temp4;'
exec(@SQL_STRING)
print @SQL_STRING
/*
日常生活表 RCSHB
*/
set @SQL_STRING='select ' +''''+ '日常生活表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'FixLineTel'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp1 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660211'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '日常生活表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'MobilePhone'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp2 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660212'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '日常生活表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'OfficeSupplies'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp3 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660221'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '日常生活表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'OfficeRepairMaintenance'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp4 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660222'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '日常生活表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'WaterElectricity'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp5 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660231'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '日常生活表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'MISExpense'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp6 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660233'+''''+';'
set @SQL_STRING=@SQL_STRING+' insert into BI.DBO.RCSHB(GLType,CompanyName,FixLineTel,MobilePhone,OfficeSupplies,OfficeRepairMaintenance,WaterElectricity,MISExpense,iYPeriod,iperiod,iyear)'
set @SQL_STRING=@SQL_STRING+' select BI.DBO.temp1.GLType,BI.DBO.temp1.CompanyName,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.FixLineTel,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp2.MobilePhone,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp3.OfficeSupplies,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp4.OfficeRepairMaintenance,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp5.WaterElectricity,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp6.MISExpense,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iYPeriod,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod,BI.DBO.temp1.iyear from BI.DBO.temp1 left join BI.DBO.temp2 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp2.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp2.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp2.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp3 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp3.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp3.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp3.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp4 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp4.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp4.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp4.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp5 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp5.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp5.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp5.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp6 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp6.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp6.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp6.iYPeriod;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp1;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp2;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp3;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp4;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp5;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp6;'
exec(@SQL_STRING)
print @SQL_STRING
/*
人事表 RSB
*/
set @SQL_STRING='select ' +''''+ '人事表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'Salary'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp1 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'66020101'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '人事表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'Bonus'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp2 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'66020102'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '人事表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'SalesCommission'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp3 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'66020103'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '人事表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'SocialInsurance'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp4 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660203'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '人事表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'Benefits'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp5 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660204'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '人事表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'HousingOtherAllowance'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp6 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660205'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '人事表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'0 as '+''''+'HeadCount'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp7 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where 1=2;'
set @SQL_STRING=@SQL_STRING+' insert into BI.DBO.RSB(GLType,CompanyName ,Salary ,Bonus ,SalesCommission,SocialInsurance,Benefits,HousingOtherAllowance,HeadCount,iYPeriod,iperiod,iyear)'
set @SQL_STRING=@SQL_STRING+' select BI.DBO.temp1.GLType,BI.DBO.temp1.CompanyName,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.Salary,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp2.Bonus,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp3.SalesCommission,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp4.SocialInsurance,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp5.Benefits,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp6.HousingOtherAllowance,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp7.HeadCount,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iYPeriod,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod,BI.DBO.temp1.iyear from BI.DBO.temp1 left join BI.DBO.temp2 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp2.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp2.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp2.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp3 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp3.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp3.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp3.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp4 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp4.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp4.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp4.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp5 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp5.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp5.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp5.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp6 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp6.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp6.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp6.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp7 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp7.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp7.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp7.iYPeriod;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp1;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp2;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp3;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp4;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp5;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp6;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp7;'
exec(@SQL_STRING)
print @SQL_STRING
/*
团队建设表 TDJS
*/
set @SQL_STRING='select ' +''''+ '团队建设表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+' isnull(md,0.00) as '+''''+'Training'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp1 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660208'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '团队建设表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'TeamBuilding'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp2 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660207'+''''+';'
set @SQL_STRING=@SQL_STRING+'select ' +''''+ '团队建设表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+'isnull(md,0.00) as '+''''+'EmployeeUniforms'+''''+','
set @SQL_STRING=@SQL_STRING+'iYPeriod,iperiod,iyear into BI.DBO.temp3 from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'660210'+''''+';'
set @SQL_STRING=@SQL_STRING+' insert into BI.DBO.TDJS(GLType,CompanyName,Training,TeamBuilding,EmployeeUniforms,iYPeriod,iperiod,iyear)'
set @SQL_STRING=@SQL_STRING+' select BI.DBO.temp1.GLType,BI.DBO.temp1.CompanyName,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.Training,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp2.TeamBuilding,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp3.EmployeeUniforms,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iYPeriod,'
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod,BI.DBO.temp1.iyear from BI.DBO.temp1 left join BI.DBO.temp2 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp2.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp2.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp2.iYPeriod'
set @SQL_STRING=@SQL_STRING+' left join BI.DBO.temp3 on '
set @SQL_STRING=@SQL_STRING+' BI.DBO.temp1.iperiod=BI.DBO.temp3.iperiod and BI.DBO.temp1.iyear=BI.DBO.temp3.iyear and BI.DBO.temp1.iYPeriod=BI.DBO.temp3.iYPeriod;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp1;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp2;'
set @SQL_STRING=@SQL_STRING+' drop table BI.DBO.temp3;'
exec(@SQL_STRING)
print @SQL_STRING
/*
折旧表 ZJB
*/
set @SQL_STRING='INSERT INTO BI.DBO.ZJB (GLType,CompanyName,DYZJ,LJZJ,GDZCJZ,ZJCLGDZC,iYPeriod,iPeriod,iYear)'
set @SQL_STRING=@SQL_STRING+' select ' +''''+ '折旧表' +''''+ ' as GLType,'+''''+rtrim(@DB_COMPANY_NAME)+''''+ ' as CompanyName,'
set @SQL_STRING=@SQL_STRING+' a.mc as '+''''+ '当月折旧'+''''+',a.me as '+''''+'累计折旧'+''''+',(a.me-b.me) as '+''''+'固定资产净值'+''''+' ,a.md-a.mc as '+''''+'新增或处理固定资产'+''''+','
set @SQL_STRING=@SQL_STRING+' a.iYPeriod,a.iperiod,a.iyear '
set @SQL_STRING=@SQL_STRING+' from (select mc,md,me,iyear,iperiod,iYPeriod from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'1601'+''''+') a,'
set @SQL_STRING=@SQL_STRING+' (select mc,md,me,iyear,iperiod,iYPeriod from '+rtrim(@DB_CODE)+'.dbo.GL_accsum where ccode='+''''+'1602'+''''+') b '
set @SQL_STRING=@SQL_STRING+' where a.iYPeriod=b.iYPeriod and a.iperiod=b.iperiod and a.iyear=b.iyear;'
exec(@SQL_STRING)
print @SQL_STRING
fetch next from table_cursor into @DB_CODE,@DB_COMPANY_NAME
END
close table_cursor
deallocate table_cursor
版权声明:本文博主原创文章。博客,未经同意不得转载。
用友财务总帐(GL)模BI数据ETL分析的更多相关文章
- R语言作为BI中ETL的工具
R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...
- EBS 定义显示总帐快码设置
自定义一个功能如下,挂到菜单上就可以了功能 用户功能名 表单 参数GL_GLXDQMLK(自定义) 总帐代码列表 定义代码 VIEW_APPLICATION="SQLGL" HEL ...
- 第一篇:Power BI数据可视化概述
前言 "可视化之工具,可爱者甚蕃.统计学家独爱R,自Python来,世人盛爱matplotlib.余独爱Power BI之出微软而不染(免费),濯Office而不妖(够精简).......& ...
- 【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(三)
资料库的创建.体系结构的创建.模型反向工程都已经完成了,下面就是创建以及执行接口来完成工作了. 浏览前两节请点击: [ODI]| 数据ETL:从零开始使用Oracle ODI完成数据集成(一) [OD ...
- 【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(二)
前一节已经完成了Oracle数据库和ODI的安装,并已经为ODI在Oracle数据库中创建了两个用户,分别用于存放主资料库数据和工作资料库数据,在ODI中完成主资料库和工作资料库的创建,也分别为其创建 ...
- 【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(一)
0. 环境说明及软件准备 ODI(Oracle Data Integrator)是Oracle公司提供的一种数据集成工具,能高效地实现批量数据的抽取.转换和加载.ODI可以实现当今大多数的主流关系型数 ...
- SAP FI中配置“特别总帐标志” SGL
SAP FI中配置“特别总帐标志” SGL 创建时间:2018年10月6日(星期六) 下午3:42 | 分类:未分类 | 字数:396 | SAP FI中配置“特别总帐标志” SGL 2013年 ...
- 教你如何选择BI数据可视化工具
本文来自网易云社区. 关于如何选择BI数据可视化工具,总体而言,主流BI产品在选择的时候要除了需要考虑从数据到展现.从公司内到公司外等各种场景,结合前面朋友的回答,还需要考虑以下几点:1:以后的数据处 ...
- 设备数据通过Azure Functions 推送到 Power BI 数据大屏进行展示(2.Azure Functions实战)
本案例适用于开发者入门理解Azure Functions/ IoT Hub / Service Bus / Power BI等几款产品. 主要实战的内容为: 将设备遥测数据上传到物联网中心, 将遥测数 ...
随机推荐
- GIS Tools for Hadoop 详细介绍
2013年Esri美国在开发者大会上演示了GIS数据结合Hadoop分析的一个示例,这个示例赢得了听众的阵阵掌声,我们也许对GIS不是很陌生,但是对Hadoop却不是很清楚,其实Esri是用Java开 ...
- Ubuntu——grub rescue 主引导修复
长期使用windows 和 ubuntu 人双系统,很可能遇到沉重的一个系统,或以其他方式加盟分区,导致系统重新启动时 : GRUB loading error:unknow filesystem g ...
- "ScrollView can host only one direct child"问题解决了
1. 问题叙述性说明: (请注意以下几点大胆). ScrollView作为顶层view时报错,直接导致apk崩溃.具体错误信息例如以下: 12-21 09:12:15.150: D/AndroidRu ...
- C#如何在钉钉开发平台
C#如何在钉钉开发平台中创建部门 钉钉是阿里巴巴专为中小企业和团队打造的沟通.协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案.通过钉钉开放平台,企业或第三方合作伙伴可以帮助企 ...
- linux yum命令
1 安装yum install 全部安装yum install package1 安装指定的安装包package1yum groupinsall group1 安装程序组group1 2 更新和升级y ...
- Shell 脚本常用命令
Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook.在工作过程中整理了一下,贴在这里已备查看. 1 Shell中的特殊符号 ...
- 设计模式六大原则-OCP
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...
- 抢车位中的排名bug(比較使用了无符号数)
昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.只是csdn如今不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073 ...
- windows phone (19) 深入了解TextBlock
原文:windows phone (19) 深入了解TextBlock TextBlock 一般用于显示文本的元素,我们最为经常用到的是该类的Text属性,其实显示文本有两种呈现方式,一个是设置内部文 ...
- python学习笔记--for循环
推荐一个学习语言的网站:http://www.codecademy.com 有教程,可以边学边写,蛮不错的. for循环: 1.for loops allow us to iterate throug ...