表1
商品名+商品编号+商品版本,3个自段
A 001 revA
B 001 revA
A 002 revA
A 001 revB
B 002 revA
C 001 revB
请问如何用sql显示成如下(类似与excel数据透视表)
商品名 revA revB
A 2 1
B 2 0
CREATE TABLE #t1(
商品名 VARCHAR(20),
商品编号 VARCHAR(20),
商品版本 VARCHAR(20)
)
INSERT INTO #t1
( 商品名, 商品编号, 商品版本 )
SELECT
'A' ,'001', 'revA' UNION ALL SELECT
'B' ,'001', 'revA' UNION ALL SELECT
'A' ,'002', 'revA' UNION ALL SELECT
'A' ,'001', 'revB' UNION ALL SELECT
'B' ,'002', 'revA' UNION ALL SELECT
'C' ,'001', 'revB'
--sql 2000
declare @sql varchar(8000)
set @sql = 'select 商品名 '
select @sql = @sql + ' , SUM(case 商品版本 when ''' + 商品版本 + ''' then 1 else 0 end) [' + 商品版本 + ']'
from (select distinct 商品版本 from #t1) as a
set @sql = @sql + ' from #t1 group by 商品名 '
exec(@sql)
--sql2005
SELECT 商品名,
[revA], [revB]
FROM
(SELECT 商品名,商品版本 FROM #t1) AS t
PIVOT --透视操作符
(
count(商品版本)
FOR 商品版本 IN ([revA], [revB])
) AS PivotTable;
本文介绍如何使用SQL将表格数据转换为数据透视表格式。针对不同版本的SQL Server提供了两种解决方案,包括SQL 2000和SQL 2005的实现方式。通过实例演示了如何将商品名、编号及版本等字段进行聚合展示。
1092

被折叠的 条评论
为什么被折叠?



