1 use EntDataCenter 2 go 3 SET ANSI_NULLS ON 4 GO 5 SET QUOTED_IDENTIFIER ON 6 GO 7 -- ============================================= 8 -- Author: <Author,,Name> 9 -- Create date: <Create Date,,> 10 -- Description: <Description,,> 11 -- ============================================= 12 --exec dbo.ent_all_DataToExcel 13 create PROCEDURE ent_all_DataToExcel 14 15 AS 16 BEGIN 17 -- SET NOCOUNT ON added to prevent extra result sets from 18 -- interfering with SELECT statements. 19 SET NOCOUNT off; 20 DECLARE @str2name varchar(8000);--二级国代分类名称 21 DECLARE @str2code varchar(8000);--二级国代分类代码 22 DECLARE @str1name varchar(8000);--一级国代分类名称 23 DECLARE @str varchar(8000); 24 DECLARE @str1 varchar(8000); 25 DECLARE @server varchar(100);--服务器 26 DECLARE @uname varchar(100);--用户名 27 DECLARE @pwd varchar(100);--密码 28 29 DECLARE @IsExist bit; 30 select @str2name=‘‘; 31 select @str2code=‘‘; 32 select @str1name=‘‘; 33 select @str=‘‘; 34 select @str1=‘‘; 35 set @server=‘192.168.1.7‘; 36 set @uname=‘dev_db‘; 37 set @pwd=‘dev_db‘; 38 set @IsExist=0; 39 40 ---判断文件夹是否存在,若不存在则创建文件夹---- 41 begin 42 CREATE TABLE #tmp ([File Exists] BIT, [File is a Directory] BIT, [Parent Directory Exists] BIT) 43 INSERT INTO #tmp ([File Exists], [File is a Directory], [Parent Directory Exists]) 44 EXEC master.dbo.xp_fileexist ‘c:\project‘; 45 SELECT @IsExist=[File is a Directory] FROM #tmp; 46 if(@IsExist=0) 47 begin 48 ExEc xp_cmdshell ‘mkdir c:\project‘; 49 end 50 drop table #tmp 51 end 52 53 DECLARE contact_cursor CURSOR FOR (SELECT a.国代分类名称 as 二级国代分类名称,a.国代分类代码 as 二级国代分类代码,b.国代分类名称 as 一级国代分类名称 54 FROM [EntDataCenter].[dbo].[doc_class_nation_code] a 55 inner join [EntDataCenter].[dbo].[doc_class_nation_code] b 56 on a.PCode=b.国代分类代码 where a.Level=1) 57 OPEN contact_cursor 58 FETCH NEXT FROM contact_cursor 59 INTO @str2name,@str2code,@str1name 60 WHILE @@FETCH_STATUS = 0 61 BEGIN 62 begin 63 set @str=‘select a.[企业名称],a.[所在省份],a.[所在城市],‘ ; 64 set @str=@str+‘(case b.year when 2005 then b.[total_assets] else 0 end) as [2005资产],‘; 65 set @str=@str+‘(case b.year when 2006 then b.[total_assets] else 0 end) as [2006资产],‘; 66 set @str=@str+‘(case b.year when 2007 then b.[total_assets] else 0 end) as [2007资产],‘; 67 set @str=@str+‘(case b.year when 2008 then b.[total_assets] else 0 end) as [2008资产],‘; 68 set @str=@str+‘(case b.year when 2009 then b.[total_assets] else 0 end) as [2009资产],‘; 69 set @str=@str+‘(case b.year when 2010 then b.[total_assets] else 0 end) as [2010资产],‘; 70 set @str=@str+‘(case b.year when 2011 then b.[total_assets] else 0 end) as [2011资产],‘; 71 set @str=@str+‘(case b.year when 2012 then b.[total_assets] else 0 end) as [2012资产],‘; 72 set @str=@str+‘(case b.year when 2005 then b.total_current_assets else 0 end) as [2005流动资产],‘; 73 set @str=@str+‘(case b.year when 2006 then b.total_current_assets else 0 end) as [2006流动资产],‘; 74 set @str=@str+‘(case b.year when 2007 then b.total_current_assets else 0 end) as [2007流动资产],‘; 75 set @str=@str+‘(case b.year when 2008 then b.total_current_assets else 0 end) as [2008流动资产],‘; 76 set @str=@str+‘(case b.year when 2009 then b.total_current_assets else 0 end) as [2009流动资产],‘; 77 set @str=@str+‘(case b.year when 2010 then b.total_current_assets else 0 end) as [2010流动资产],‘; 78 set @str=@str+‘(case b.year when 2011 then b.total_current_assets else 0 end) as [2011流动资产],‘; 79 set @str=@str+‘(case b.year when 2012 then b.total_current_assets else 0 end) as [2012流动资产],‘; 80 set @str=@str+‘(case b.year when 2005 then b.total_liabilities else 0 end) as [2005负债],‘; 81 set @str=@str+‘(case b.year when 2006 then b.total_liabilities else 0 end) as [2006负债],‘; 82 set @str=@str+‘(case b.year when 2007 then b.total_liabilities else 0 end) as [2007负债],‘; 83 set @str=@str+‘(case b.year when 2008 then b.total_liabilities else 0 end) as [2008负债],‘; 84 set @str=@str+‘(case b.year when 2009 then b.total_liabilities else 0 end) as [2009负债],‘; 85 set @str=@str+‘(case b.year when 2010 then b.total_liabilities else 0 end) as [2010负债],‘; 86 set @str=@str+‘(case b.year when 2011 then b.total_liabilities else 0 end) as [2011负债],‘; 87 set @str=@str+‘(case b.year when 2012 then b.total_liabilities else 0 end) as [2012负债],‘; 88 set @str=@str+‘(case b.year when 2005 then b.operating_income else 0 end) as [2005收入],‘; 89 set @str=@str+‘(case b.year when 2006 then b.operating_income else 0 end) as [2006收入],‘; 90 set @str=@str+‘(case b.year when 2007 then b.operating_income else 0 end) as [2007收入],‘; 91 set @str=@str+‘(case b.year when 2008 then b.operating_income else 0 end) as [2008收入],‘; 92 set @str=@str+‘(case b.year when 2009 then b.operating_income else 0 end) as [2009收入],‘; 93 set @str=@str+‘(case b.year when 2010 then b.operating_income else 0 end) as [2010收入],‘; 94 set @str=@str+‘(case b.year when 2011 then b.operating_income else 0 end) as [2011收入],‘; 95 set @str=@str+‘(case b.year when 2012 then b.operating_income else 0 end) as [2012收入],‘; 96 set @str=@str+‘(case b.year when 2005 then b.operating_costs else 0 end) as [2005成本],‘; 97 set @str=@str+‘(case b.year when 2006 then b.operating_costs else 0 end) as [2006成本],‘; 98 set @str=@str+‘(case b.year when 2007 then b.operating_costs else 0 end) as [2007成本],‘; 99 set @str=@str+‘(case b.year when 2008 then b.operating_costs else 0 end) as [2008成本],‘; 100 set @str=@str+‘(case b.year when 2009 then b.operating_costs else 0 end) as [2009成本],‘; 101 set @str=@str+‘(case b.year when 2010 then b.operating_costs else 0 end) as [2010成本],‘; 102 set @str=@str+‘(case b.year when 2011 then b.operating_costs else 0 end) as [2011成本],‘; 103 set @str=@str+‘(case b.year when 2012 then b.operating_costs else 0 end) as [2012成本],‘; 104 set @str=@str+‘(case b.year when 2005 then b.total_profit else 0 end) as [2005利润总额],‘; 105 set @str=@str+‘(case b.year when 2006 then b.total_profit else 0 end) as [2006利润总额],‘; 106 set @str=@str+‘(case b.year when 2007 then b.total_profit else 0 end) as [2007利润总额],‘; 107 set @str=@str+‘(case b.year when 2008 then b.total_profit else 0 end) as [2008利润总额],‘; 108 set @str=@str+‘(case b.year when 2009 then b.total_profit else 0 end) as [2009利润总额],‘; 109 set @str=@str+‘(case b.year when 2010 then b.total_profit else 0 end) as [2010利润总额],‘; 110 set @str=@str+‘(case b.year when 2011 then b.total_profit else 0 end) as [2011利润总额],‘; 111 set @str=@str+‘(case b.year when 2012 then b.total_profit else 0 end) as [2012利润总额]‘; 112 set @str=@str+‘from [dbo].[ent_all] a ‘; 113 set @str=@str+‘left join [dbo].[Ent_All_Finance] b on a.ent_id = b.ent_id where a.国代分类代码 like ‘‘‘+@str2code+‘%‘‘‘; 114 115 --set @str=‘select * from [EntDataCenter].[dbo].[doc_class_nation_code] where Level=1‘; 116 set @str1=‘bcp "‘+@str+‘" queryout C:\project\‘+@str1name+‘-‘+@str2name+‘.xls -c -S‘+@server+‘ -U‘+@uname+‘ -P‘+@pwd+‘‘; 117 end 118 --print @str1; 119 EXEC master..xp_cmdshell @str1 120 121 122 FETCH NEXT FROM contact_cursor 123 INTO @str2name,@str2code,@str1name 124 END 125 CLOSE contact_cursor 126 DEALLOCATE contact_cursor 127 128 END 129 GO