乙個sql的行列轉置的例子。

2021-08-27 06:21:04 字數 1483 閱讀 5276

有這樣乙個aaa表如下所示:

name    score    color

jim         10        red

jim         20       blue

jim         20       green

jim         1         black

glin        2          red

glin        33        blue

glin        21       green

glin        19       black

bob        22       red

bob        39       blue

bob        11      green

bob        11      black

要轉置成如下所示的bbb表

name red  blue green  black

jim     10    20     20        1

bob    22    39    11       11

glin     2      33    21       19

使用的sql如下:

select r.name ,r.s red,b.s blue,g.s green ,bk.s black

from( select name,sum(score)s from aaa where color='red' group by name ) r,

( select name,sum(score)s from aaa where color='blue' group by name ) b,

( select name,sum(score)s from aaa where color='green' group by name ) g,

( select name,sum(score)s from aaa where color='black' group by name ) bk

where r.name = b.name and b.name = g.name and g.name = bk.name

相當於group by之後把每個人的某一種顏色的分數統計成乙個資料集,再把這幾個響應的資料集做表連線拼起來。

如果反過來,指導bbb表,要返回成aaa表,sql的寫法是怎樣呢?

select name, red score,'red' color from bbb

union 

select name, blue score,'blue' color from bbb

union 

select name, green score,'green' color from bbb

union 

select name, black score,'black' color from bbb

就是把幾個查詢集並起來。

MySQL乙個類行列轉置的顯示處理

首先,建立表return change 插入符合表字段型別屬性的資料,如上例子 直接語句 selectname,case cname when 語文 then score else end 語文 case cname when 數學 then score else end 數學 case cname...

乙個sql的例子

select dbo.userinfo.username,dbo.userinfo.usertruename,dbo.userinfo.useremail,dbo.userinfo.usermobile,dbo.userinfo.usertelephone,dbo.userinfo.usercar,...

SQL 行列轉置 常見面試題(一)

常見面試題如下 先來分析一下 第一步將course 裡面的課程轉換為列標題,常用 case when 就能解決。select 學號 max case when 課程號 0001 then 成績 end as 語文 max case when 課程號 0002 then 成績 end as 數學 ma...