原始表格如下:
CREATE TABLE [dbo].[tbb](
[公司] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[部门] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[数据] [float] NULL
) ON [PRIMARY]原始表:
公司 部门 数据
AAA 业务一部 111
AAA 业务二部 112
AAA 业务三部 113
AAA 业务四部 114
AAA 业务五部 115
AAA 业务六部 116
AAA 业务七部 117
AAA 业务八部 118
BBB 业务九部 222
BBB 业务十部 223
BBB 业务十一部 224
BBB 业务十二部 225
BBB 业务十三部 226
BBB 业务十四部 227
BBB 业务十五部 228
CCC 业务十六部 333
CCC 业务十七部 334
CCC 业务十八部 335
CCC 业务十九部 336
改变之后的表格如下:部门/公司 AAA BBB CCC
AAA
业务一部 111
业务二部 112
业务三部 113
业务四部 114
业务五部 115
业务六部 116
业务七部 117
业务八部 118
AAA小计 916
BBB
业务九部 222
业务十部 223
业务十一部 224
业务十二部 225
业务十三部 226
业务十四部 227
业务十五部 228
BBB小计 1575
CCC
业务十六部 333
业务十七部 334
业务十八部 335
业务十九部 336
CCC小计 1338
总计 916 1575 1338
CREATE TABLE [dbo].[tbb](
[公司] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[部门] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[数据] [float] NULL
) ON [PRIMARY]原始表:
公司 部门 数据
AAA 业务一部 111
AAA 业务二部 112
AAA 业务三部 113
AAA 业务四部 114
AAA 业务五部 115
AAA 业务六部 116
AAA 业务七部 117
AAA 业务八部 118
BBB 业务九部 222
BBB 业务十部 223
BBB 业务十一部 224
BBB 业务十二部 225
BBB 业务十三部 226
BBB 业务十四部 227
BBB 业务十五部 228
CCC 业务十六部 333
CCC 业务十七部 334
CCC 业务十八部 335
CCC 业务十九部 336
改变之后的表格如下:部门/公司 AAA BBB CCC
AAA
业务一部 111
业务二部 112
业务三部 113
业务四部 114
业务五部 115
业务六部 116
业务七部 117
业务八部 118
AAA小计 916
BBB
业务九部 222
业务十部 223
业务十一部 224
业务十二部 225
业务十三部 226
业务十四部 227
业务十五部 228
BBB小计 1575
CCC
业务十六部 333
业务十七部 334
业务十八部 335
业务十九部 336
CCC小计 1338
总计 916 1575 1338
部门/公司 AAA BBB CCC
AAA
业务一部 111
业务二部 112
业务三部 113
业务四部 114
业务五部 115
业务六部 116
业务七部 117
业务八部 118
AAA小计 916
BBB
业务九部 222
业务十部 223
业务十一部 224
业务十二部 225
业务十三部 226
业务十四部 227
业务十五部 228
BBB小计 1575
CCC
业务十六部 333
业务十七部 334
业务十八部 335
业务十九部 336
CCC小计 1338
总计 916 1575 1338
http://hi.csdn.net/space-231298-do-album-picid-518003-goto-down.html效果图片:
http://hi.csdn.net/space-231298-do-album-picid-518002-goto-down.html
-- Author : happyflystone
-- Date : 2010-04-15 20:30:32
-- Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
-- Apr 14 2006 01:12:25
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
--
-------------------------------------------------------------------------- Test Data: ta
IF OBJECT_ID('[ta]') IS NOT NULL
DROP TABLE [ta]
Go
CREATE TABLE ta([公司] NVARCHAR(3),[部门] NVARCHAR(5),[数据] INT)
Go
INSERT INTO ta
SELECT 'AAA','业务一部',111 UNION ALL
SELECT 'AAA','业务二部',112 UNION ALL
SELECT 'AAA','业务三部',113 UNION ALL
SELECT 'AAA','业务四部',114 UNION ALL
SELECT 'AAA','业务五部',115 UNION ALL
SELECT 'AAA','业务六部',116 UNION ALL
SELECT 'AAA','业务七部',117 UNION ALL
SELECT 'AAA','业务八部',118 UNION ALL
SELECT 'BBB','业务九部',222 UNION ALL
SELECT 'BBB','业务十部',223 UNION ALL
SELECT 'BBB','业务十一部',224 UNION ALL
SELECT 'BBB','业务十二部',225 UNION ALL
SELECT 'BBB','业务十三部',226 UNION ALL
SELECT 'BBB','业务十四部',227 UNION ALL
SELECT 'BBB','业务十五部',228 UNION ALL
SELECT 'CCC','业务十六部',333 UNION ALL
SELECT 'CCC','业务十七部',334 UNION ALL
SELECT 'CCC','业务十八部',335 UNION ALL
SELECT 'CCC','业务十九部',336
GO
--Start
;with cte
as
(
SELECT
*
FROM
TA
pivot
(max([数据]) for [公司] in (aaa,bbb,ccc)) pvt
)
select isnull([公司],'总计'),isnull(a.[部门],'小计'),sum(aaa) aaa,sum(bbb) bbb,sum(ccc) ccc
from ta a left join cte b on a.[部门] = b.[部门]
group by [公司],a.[部门] with rollup
order by grouping([公司]),[公司],a.[部门]
--result:
/* aaa bbb ccc
---- ----- ----------- ----------- -----------
AAA 小计 916 NULL NULL
AAA 业务八部 118 NULL NULL
AAA 业务二部 112 NULL NULL
AAA 业务六部 116 NULL NULL
AAA 业务七部 117 NULL NULL
AAA 业务三部 113 NULL NULL
AAA 业务四部 114 NULL NULL
AAA 业务五部 115 NULL NULL
AAA 业务一部 111 NULL NULL
BBB 小计 NULL 1575 NULL
BBB 业务九部 NULL 222 NULL
BBB 业务十部 NULL 223 NULL
BBB 业务十二部 NULL 225 NULL
BBB 业务十三部 NULL 226 NULL
BBB 业务十四部 NULL 227 NULL
BBB 业务十五部 NULL 228 NULL
BBB 业务十一部 NULL 224 NULL
CCC 小计 NULL NULL 1338
CCC 业务十八部 NULL NULL 335
CCC 业务十九部 NULL NULL 336
CCC 业务十六部 NULL NULL 333
CCC 业务十七部 NULL NULL 334
总计 小计 916 1575 1338*/
--End