sql server行轉列問題終極解決

2021-04-13 13:12:29 字數 1405 閱讀 9016

主要應用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

sql server行轉列問題終極解決

主要應用case語句來解決行轉列的問題 行轉列問題主要分為兩類 1 簡單的行轉列問題 示例表 id sid course result 1 2005001 語文 80.0 2 2005001 數學 90.0 3 2005001 英語 80.0 4 2005002 語文 56.0 5 2005002 ...

sql server行轉列問題終極解決收藏

主要應用case語句來解決行轉列的問題 行轉列問題主要分為兩類 1 簡單的行轉列問題 示例表 id sid course result 1 2005001 語文 80.0 2 2005001 數學 90.0 3 2005001 英語 80.0 4 2005002 語文 56.0 5 2005002 ...

SqlServer經典行轉列 討論

use cubedemo goset nocount on 銷售模組 if object id n businesscommon salemodule n u isnot null drop table businesscommon salemodule gocreate table busines...