데이터베이스 행렬 변환

1364 단어
예제 (my sql)
원본 표:
   :user
----------------------------------------
name        |  course   | grade
----------------------------------------
zhangsan    |  Java     |  70
----------------------------------------
zhangsan    |  C++      |  80
----------------------------------------
lisi        |  java     |  90
----------------------------------------
lisi        |  C#       |  60
----------------------------------------

SQL 문 구 를 사용 하여 다음 과 같은 형식 을 얻 을 수 있 습 니 다.
----------------------------------------
name     |  java |  C++  |  C#
----------------------------------------
zhangsan |  70   |  80   |  null
----------------------------------------
lisi     |  90   |  null |  60
----------------------------------------

프로젝트 1
select   name,
sum(case when course='java' then grade end) as java,
sum(case when course='C++' then grade end) as C++,
sum(case when course='C#' then grade end) as C#
from test group by name

방안 2
select  distinct c.`name` AS name,
(select grade from test where name = c.`name` and course = 'java' )as java,
(select grade from test where name = c.`name` and course = 'C++' )as C++,
(select grade from test where name = c.`name` and course = 'C#' )as C#
from test c

좋은 웹페이지 즐겨찾기