当前位置: 代码迷 >> 报表 >> 存储过程兑现列转行报表
  详细解决方案

存储过程兑现列转行报表

热度:350   发布时间:2016-05-05 08:00:35.0
存储过程实现列转行报表

例如:求人员年龄结构的报表

CREATE TABLE TAB1(ID BIGINT IDENTITY(1,1),Beg Int,En Int,P varchar(100))CREATE TABLE TAB2(ID BIGINT IDENTITY(1,1),Name varchar(100),Job_Date Date)GOINSERT INTO TAB1SELECT 0,3,'一级员工'Union ALLSELECT 4,4,'二级员工'Union ALLSELECT 5,5,'三级员工'Union ALLSELECT 6,7,'四级员工'Union ALLSELECT 8,100,'五级员工'GOINSERT INTO TAB2SELECT '一','2011-01-01'Union AllSELECT '一','2011-01-01'Union AllSELECT '一','2011-01-01'Union AllSELECT '一','2011-01-01'Union AllSELECT '一','2011-01-01'Union AllSELECT '一','2001-01-01'Union AllSELECT '一','2005-01-01'Union AllSELECT '一','2008-01-01'Union AllSELECT '一','2009-01-01'Union AllSELECT '一','2010-01-01'Union AllSELECT '一','2008-01-01'Union AllSELECT '一','2009-01-01'Union AllSELECT '一','2010-01-01'Union AllSELECT '一','2009-01-01'Union AllSELECT '一','2010-01-01'GODECLARE @SQL VARCHAR(8000)SELECT @SQL = 'Select ';SELECT @SQL = @SQL + ' (Select Count(1) From TAB2 Where  DATEDIFF(YEAR,Job_Date,GETDATE()) Between ' 	+ Cast(Beg AS VARCHAR) + ' And ' + CAST(En AS VARCHAR)+ ' ) [' + P + '],'From TAB1SELECT @SQL = LEFT(@SQL,LEN(@SQL)-1)EXEC(@SQL)DROP TABLE TAB1DROP TABLE TAB2


  相关解决方案