sqlserver2000 下,行列轉換(從簡單到複雜二)

來源:互聯網
上載者:User

接上篇,要是課程我不知道怎麼辦呢?“辦法比困難多”,考慮後得出一個解決方案。

就是用字串拼接的方法,把所有的課程都拼接起來。不是很繁瑣。代碼如下:


USE TEMPDB

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'TEMPDB.[dbo].[#temptable]') AND type in (N'U'))
begin
    drop table #temptable
end
create table #temptable
(
 ID int ,
 course varchar(10),
 Point int
)

insert into #temptable
select 1 ,'語文',87
union all
select 1 ,'數學',98
union all
select 2,'語文',54
union all
select 2,'化學',97
union all
select 2,'數學',92
union all
select 4,'數學',86
union all
select 5 ,'數學',65
union all
select 6,'語文',76
union all
select 6,'數學',76
union all
select 6,'化學',76

select * from #temptable

declare @str varchar(2000)
set @str = ' select ID '
select @str = @str + '  ,  max(case when course = ''' + course +''' then Point else 0 end )  as   ''' + course + '''' 
from  (select distinct course from #temptable) A  
set @str  = @str + ' from #temptable group by ID '
print @str

exec (@str)

 

 

解決啦,說真的這個不是很複雜的問題, 剛要高興,有哥們說這種問題在sql2005中很見到就能解決。

簡單調查下,發現兩個關鍵字PIVOT/UNPIVOT,可以輕鬆實現行列轉換的需求。 

看來得繼續前進啦,看看sql2005如何簡單實現的。(未完待續)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.