sql server行轉列問題

來源:互聯網
上載者:User

主要應用case語句來解決行轉列的問題

行轉列問題主要分為兩類

1)簡單的行轉列問題:

樣本表:

id  sid           course  result

1   2005001 語文     80.0

2   2005001 數學     90.0

3   2005001 英語     80.0

4   2005002 語文     56.0

5   2005002 數學     69.0

6   2005002 英語     89.0

執行

select sid,語文=isnull(sum(case course when '語文' then result end),0),

   數學=isnull(sum(case course when '數學' then result end),0),

   英語=isnull(sum(case course when '英語' then result end),0)

   from result 

   group by sid

   order by sid

 

得出結果

sid           語文 數學 英語

2005001 80.0  90.0  80.0

2005002 56.0  69.0  89.0

 

2)較為複雜的行轉列

表1:course

id name

1 語文

2 數學

3 英語



表2:result

id sid          course  result

1 2005001 語文      80.0

2 2005001 數學      90.0

3 2005001 英語      80.0

4 2005002 語文      56.0

5 2005002 數學      69.0

6 2005002 英語      89.0

 

declare @sql varchar(8000)

set @sql='select sid'

select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)'

 from course order by id 

set @sql=@sql+' from result group by sid order by sid'

print @sql

exec(@sql)

 

得出結果

sid           語文 數學 英語

2005001 80.0  90.0  80.0

2005002 56.0  69.0  89.0

http://blog.csdn.net/tthxqttzln/archive/2007/02/02/1500825.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.