原来的查询结果是这样的:YEAR   MONTH   DAY    CODE     NAME                   NUM
----------------------------------------------------------
2004   1         2    A00001   Intel 赛扬 2.4GHz       1
2004   1         4    A00001   Intel 赛扬 2.4GHz       1
2004   1         4    A00002   Intel P4 XEON 1.8GHz    2
能否将以上的表格形式改为:品名为列,横向标题,月份为行。如下:YEAR   MONTH   DAY    A00001    A00002      
---------------------------------------------------
2004   1         2      1
2004   1         4      1         2是否需要建立多张视图呀,求解??

解决方案 »

  1.   

    Create Table #T(
     FYear  int,
     FMonth int,
     FDay   int,
     FCode   varchar(10),
     FName   varchar(20),
     FNum    int
    )Insert Into #T(FYear,FMonth,FDay,FCode,FName,FNum) values(2004,1,2,'A0001','Intel 赛扬 2.4GHz', 1)Insert Into #T(FYear,FMonth,FDay,FCode,FName,FNum) values(2004,1,4,'A0001','Intel 赛扬 2.4GHz', 1)Insert Into #T(FYear,FMonth,FDay,FCode,FName,FNum) values(2004,1,4,'A0002','Intel P4 XEON 1.8GHz', 2)DECLARE @sql varchar(8000)
    SET @sql='select FYear ,FMonth ,FDay '
    select @sql=@sql+',sum(case FCode when +'''+FCode+'''then FNum else '''' end)'+FCode+''
    from (select distinct FCode from #T) as a
    SET @sql=@sql +' From #T Group by FYear,FMonth,FDay'
    EXEC(@sql)