
怎么樣才能處理這樣的結果呢?
uj5u.com熱心網友回復:
手機不好碼代碼,望采納uj5u.com熱心網友回復:
mysql> select * from score;+----+------+------+-------+-------+
| id | name | year | month | score |
+----+------+------+-------+-------+
| 1 | 張三 | 2017 | 2 | 36 |
| 2 | 張三 | 2017 | 3 | 98 |
| 3 | 張三 | 2017 | 4 | 22 |
| 4 | 張三 | 2018 | 1 | 40 |
| 5 | 張三 | 2018 | 2 | 60 |
| 6 | 張三 | 2018 | 3 | 50 |
| 7 | 張三 | 2018 | 4 | 80 |
| 8 | 張三 | 2017 | 1 | 25 |
+----+------+------+-------+-------+
---------------------------------------------------
mysql> select name,
-> year,
-> max(case month when '1' then score else 0 end) '1',
-> max(case month when '2' then score else 0 end) '2',
-> max(case month when '3' then score else 0 end) '3',
-> max(case month when '4' then score else 0 end) '4'
-> from score
-> group by name,year
-> order by year desc;
+------+------+------+------+------+------+
| name | year | 1 | 2 | 3 | 4 |
+------+------+------+------+------+------+
| 張三 | 2018 | 40 | 60 | 50 | 80 |
| 張三 | 2017 | 25 | 36 | 98 | 22 |
+------+------+------+------+------+------+
uj5u.com熱心網友回復:
百度一下 行轉列 很多的uj5u.com熱心網友回復:
自行百度 WM_CONCAT 函式uj5u.com熱心網友回復:
以下SQL可以實作你的需求:
create table tmp as
select '2017' c1, 1 c2,3100 c3 from dual union all
select '2017' c1, 2 c2,3200 c3 from dual union all
select '2017' c1, 3 c2,3300 c3 from dual union all
select '2017' c1, 4 c2,3400 c3 from dual union all
select '2018' c1, 1 c2,4100 c3 from dual union all
select '2018' c1, 2 c2,4200 c3 from dual union all
select '2018' c1, 3 c2,4300 c3 from dual union all
select '2018' c1, 4 c2,4400 c3 from dual;
select c1 as "年",
max(decode(c2,1,c3,null )) as "一月",
max(decode(c2,2,c3,null )) as "二月",
max(decode(c2,3,c3,null )) as "三月",
max(decode(c2,4,c3,null )) as "四月"
from tmp
group by c1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/60606.html
標籤:開發
下一篇:今天遇到一個奇怪的問題 存盤程序中 用傳來的引數作為條件查詢 查不到資料,但定義一個區域變數,把傳來的引數賦值給區域變數,再用區域變數查詢 就能正常查到資料
