有一年的销售数据,是列表的,想显示成如下图的,请高手指点。想做一个横向的对比分析
解决方案 »
- 求助 ! sql 查询问题
- 安装sql server 2005后没有management studio等tools
- 统计查询
- 循环插入问题!
- 如何在弹出的错误提示框中显示由标量函数计算出的数字
- SQL操作遇见小瓶颈,麻烦各位
- 关于SQL server 2000 enterprise 在winows 2003 web edition 下的安装
- sql恢复问题?非常重要!
- 请问怎么用sql语句查询SQL SERVER 和 ACCESS数据库中所有的表?
- 我想在系统时间到达一时间后一个数据库就停止使用,到达另外一个时间后就开始启动,这该怎么办?谢谢!!
- SQL server 2008一直安装失败。。。求帮忙
- sql中执行存储过程参数如何取表中查询值
品牌,
SUM (
CASE
WHEN 月份 = 1 THEN
销售
ELSE
NULL
END
) AS [1月销售],
SUM (
CASE
WHEN 月份 = 2 THEN
销售
ELSE
NULL
END
) AS [2月销售],
SUM (
CASE
WHEN 月份 = 3 THEN
销售
ELSE
NULL
END
) AS [3月销售]
FROM
销售表
GROUP BY
品牌
品牌,
a.[1] AS [1月销售],
a.[2] AS [2月销售],
a.[3] AS [3月销售]
FROM
销售表 PIVOT (
SUM (销售) FOR 月份 IN ([1], [2], [3])
) AS a
Go
; WITH sales(Brand,Sales,mnth) AS
(
SELECT 'a',11,1 UNION ALL
SELECT 'b',22,1 UNION ALL
SELECT 'c',21,1 UNION ALL
SELECT 'a',22,2 UNION ALL
SELECT 'b',33,2 UNION ALL
SELECT 'a',43,3 UNION ALL
SELECT 'c',24,3 UNION ALL
SELECT 'b',21,3
)
SELECT * FROM sales
PIVOT(MAX(Sales) FOR mnth IN ([1],[2],[3])) t/*
Brand 1 2 3
a 11 22 43
b 22 33 21
c 21 NULL 24
*/
; WITH sales(Brand,Sales,mnth) AS
(
SELECT 'a',11,1 UNION ALL
SELECT 'b',22,1 UNION ALL
SELECT 'c',21,1 UNION ALL
SELECT 'a',22,2 UNION ALL
SELECT 'b',33,2 UNION ALL
SELECT 'a',43,3 UNION ALL
SELECT 'c',24,3 UNION ALL
SELECT 'b',21,6
)
SELECT * INTO #t1 FROM sales
DECLARE @col NVARCHAR(1000),@sql NVARCHAR(max)
SELECT @col=isnull(@col+',[','[')+convert(VARCHAR, mnth)+']' FROM #t1 GROUP BY mnth
PRINT @col
SET @sql='select * from #t1
PIVOT(MAX(Sales) FOR mnth IN ('+@col+')) t
'
EXEC(@sql)
/*
Brand 1 2 3 6
a 11 22 43 NULL
b 22 33 NULL 21
c 21 NULL 24 NULL
*/