sql如何写出excel数据透视表功能

表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)