經典SQL 行列轉換

2021-05-26 14:22:43 字數 1430 閱讀 9981

姓名科目

成績張三

語文66

張三數學

77張三

英語88

李四語文

99李四

數學100

李四英語

55王五

語文44

王五數學

33馬六

英語22

馬六語文

11姓名

語文數學

英語張三

6677

88李四

99100

55王五

44330馬六

11022select name,

sum(case subject when '語文' then result else 0 end) 語文,

sum(case subject when '數學' then result else 0 end) 數學,       

sum(case subject when '物理' then result else 0 end) 物理,

sum(case subject when '政治' then result else 0 end) 政治,

sum(case subject when '英語' then result else 0 end) 英語

from cj c

group by name;

select name,  

sum(decode(subject, '語文', result, 0)) as 語文,  

sum(decode(subject, '數學', result, 0)) as 數學,  

sum(decode(subject, '英語', result, 0)) as 英語  

from cj group by name

oracle 中 decode 函式用法

oracle decode含**釋:

decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值)

該函式的含義如下:

if 條件=值1 then

return(翻譯值1)

elsif 條件=值2 then

return(翻譯值2)

......

elsif 條件=值n then

return(翻譯值n)

else

return(預設值)

end if

decode(欄位或字段的運算,值1,值2,值3)

這個函式執行的結果是,當字段或字段的運算的值等於值1時,該函式返回值2,否則返回值3

當然值1,值2,值3也可以是表示式,這個函式使得某些sql語句簡單了許多

例如:decode(subject, '語文', result, 0) as 語文

decode(result, 0, 男,1,女,2,人妖, 0)  性別

行列轉換等經典SQL語句

在企業應用中,經常會開發報表系統,而在報表中又經常用到行列轉換,這裡有乙個經典的應用例項 原表 姓名 科目 成績 張三 語文 80 張三 數學 90 張三 物理 85 李四 語文 85 李四 物理 82 李四 英語 90 李四 政治 70 王五 英語 90 轉換後的表 姓名 數學 物理 英語 語文 ...

行列轉換等經典SQL語句

在企業應用中,經常會開發報表系統,而在報表中又經常用到行列轉換,這裡有乙個經典的應用例項 原表 姓名 科目 成績 張三 語文 80 張三 數學 90 張三 物理 85 李四 語文 85 李四 物理 82 李四 英語 90 李四 政治 70 王五 英語 90 轉換後的表 姓名 數學 物理 英語 語文 ...

行列轉換等經典SQL語句

在企業應用中,經常會開發報表系統,而在報表中又經常用到行列轉換,這裡有乙個經典的應用例項 原表 姓名 科目 成績 張三 語文 80 張三 數學 90 張三 物理 85 李四 語文 85 李四 物理 82 李四 英語 90 李四 政治 70 王五 英語 90 轉換後的表 姓名 數學 物理 英語 語文 ...