本文將向大家介紹 SQL Server 中行 轉(zhuǎn)列 問(wèn)題 的 終極 解決 方案,主要應(yīng)用case語(yǔ)句來(lái) 解決 行轉(zhuǎn)列的 問(wèn)題 ,下面就一起來(lái)看看。 行轉(zhuǎn)列 問(wèn)題 主要分為兩類。 1)簡(jiǎn)單的行轉(zhuǎn)列 問(wèn)題 : 示例表: idsidcourse result 1 2005001 語(yǔ)文80.0 2 2005001 數(shù)學(xué)90.0 3 20
本文將向大家介紹 SQL Server 中行轉(zhuǎn)列問(wèn)題的終極解決方案,主要應(yīng)用case語(yǔ)句來(lái)解決行轉(zhuǎn)列的問(wèn)題,下面就一起來(lái)看看。
行轉(zhuǎn)列問(wèn)題主要分為兩類。
1)簡(jiǎn)單的行轉(zhuǎn)列問(wèn)題:
示例表:
id sid course result
1 2005001 語(yǔ)文 80.0
2 2005001 數(shù)學(xué) 90.0
3 2005001 英語(yǔ) 80.0
4 2005002 語(yǔ)文 56.0
5 2005002 數(shù)學(xué) 69.0
6 2005002 英語(yǔ) 89.0
執(zhí)行:
以下是引用片段: select sid,語(yǔ)文=isnull(sum(case course when '語(yǔ)文' then result end),0), 數(shù)學(xué)=isnull(sum(case course when '數(shù)學(xué)' then result end),0), 英語(yǔ)=isnull(sum(case course when '英語(yǔ)' then result end),0) from result group by sid order by sid |
得出結(jié)果:
sid 語(yǔ)文 數(shù)學(xué) 英語(yǔ)
2005001 80.0 90.0 80.0
2005002 56.0 69.0 89.0
2)較為復(fù)雜的行轉(zhuǎn)列
表1:course
id name
1 語(yǔ)文
2 數(shù)學(xué)
3 英語(yǔ)
表2:result
id sid course result
1 2005001 語(yǔ)文 80.0
2 2005001 數(shù)學(xué) 90.0
3 2005001 英語(yǔ) 80.0
4 2005002 語(yǔ)文 56.0
5 2005002 數(shù)學(xué) 69.0
6 2005002 英語(yǔ) 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) |
得出結(jié)果
sid 語(yǔ)文 數(shù)學(xué) 英語(yǔ)
2005001 80.0 90.0 80.0
2005002 56.0 69.0 89.0
點(diǎn)擊查看原文>>
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com