通过建立中间查询方式,不知是否可以。我用MSSQL
如能用存储过程,效果会更好
前提,你查询能得到下表
统计项目 |
项目 |
|
年份 |
月份 |
人数 |
金额 |
|
东阳山 |
一分厂 |
|
2013 |
1 |
5 |
200 |
|
峰山 |
一分厂 |
|
2013 |
1 |
5 |
500 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
查询1
CREATE VIEW dbo.VIEW2
AS
SELECT 统计项目, 项目, '金额(元)' AS 统计类别, 2 as 大序号 ,2 as 小序号,
CASE 月份 WHEN 1 THEN 金额 ELSE 0 END AS [1月],
CASE 月份 WHEN 2 THEN 金额 ELSE 0 END AS [2月],
CASE 月份 WHEN 3 THEN 金额 ELSE 0 END AS [3月],
CASE 月份 WHEN 4 THEN 金额 ELSE 0 END AS [4月],
CASE 月份 WHEN 5 THEN 金额 ELSE 0 END AS [5月],
CASE 月份 WHEN 6 THEN 金额 ELSE 0 END AS [6月],
CASE 月份 WHEN 7 THEN 金额 ELSE 0 END AS [7月],
CASE 月份 WHEN 8 THEN 金额 ELSE 0 END AS [8月],
CASE 月份 WHEN 9 THEN 金额 ELSE 0 END AS [9月],
CASE 月份 WHEN 10 THEN 金额 ELSE 0 END AS [10月],
CASE 月份 WHEN 11 THEN 金额 ELSE 0 END AS [11月],
CASE 月份 WHEN 12 THEN 金额 ELSE 0 END AS [12月]
FROM dbo.Table1
WHERE (年份 = 2013)
union
SELECT 统计项目, 项目, '人数' AS 统计类别, 2,1,
CASE 月份 WHEN 1 THEN 人数 ELSE 0 END AS [1月],
CASE 月份 WHEN 2 THEN 人数 ELSE 0 END AS [2月],
CASE 月份 WHEN 3 THEN 人数 ELSE 0 END AS [3月],
CASE 月份 WHEN 4 THEN 人数 ELSE 0 END AS [4月],
CASE 月份 WHEN 5 THEN 人数 ELSE 0 END AS [5月],
CASE 月份 WHEN 6 THEN 人数 ELSE 0 END AS [6月],
CASE 月份 WHEN 7 THEN 人数 ELSE 0 END AS [7月],
CASE 月份 WHEN 8 THEN 人数 ELSE 0 END AS [8月],
CASE 月份 WHEN 9 THEN 人数 ELSE 0 END AS [9月],
CASE 月份 WHEN 10 THEN 人数 ELSE 0 END AS [10月],
CASE 月份 WHEN 11 THEN 人数 ELSE 0 END AS [11月],
CASE 月份 WHEN 12 THEN 人数 ELSE 0 END AS [12月]
FROM dbo.Table1
WHERE (年份 = 2013)
union
SELECT '合计', 项目,'人数' AS 统计类别, 2,1,
SUM(CASE 月份 WHEN 1 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 2 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 3 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 4 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 5 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 6 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 7 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 8 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 9 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 10 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 11 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 12 THEN 人数 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)
GROUP BY 项目
union
SELECT '合计', 项目,'金额(元)' , 2,2,
SUM(CASE 月份 WHEN 1 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 2 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 3 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 4 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 5 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 6 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 7 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 8 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 9 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 10 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 11 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 12 THEN 金额 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)
GROUP BY 项目
union
SELECT '合计', '总计','人数' , 5,1,
SUM(CASE 月份 WHEN 1 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 2 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 3 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 4 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 5 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 6 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 7 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 8 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 9 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 10 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 11 THEN 人数 ELSE 0 END),
SUM(CASE 月份 WHEN 12 THEN 人数 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)
union
SELECT '合计', '总计','金额(元)' , 5,2,
SUM(CASE 月份 WHEN 1 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 2 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 3 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 4 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 5 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 6 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 7 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 8 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 9 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 10 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 11 THEN 金额 ELSE 0 END),
SUM(CASE 月份 WHEN 12 THEN 金额 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)
查询2
CREATE VIEW dbo.VIEW3
AS
SELECT TOP 100 PERCENT 统计项目 AS Expr1, 项目 AS Expr2, 统计类别 AS Expr3,
MAX([1月]) AS Expr4, MAX([2月]) AS Expr5, MAX([3月]) AS Expr6, MAX([4月]) AS Expr7,
MAX([5月]) AS Expr8, MIN([6月]) AS Expr9, MAX([7月]) AS Expr10, MAX([8月])
AS Expr11, MAX([9月]) AS Expr12, MAX([10月]) AS Expr13, MAX([11月]) AS Expr14,
MAX([12月]) AS Expr15, MAX(大序号) AS Expr16, MAX(小序号) AS Expr17
FROM dbo.VIEW2
GROUP BY 统计项目, 统计类别, 项目
ORDER BY MAX(大序号), 项目 DESC, 统计项目, MAX(小序号)