我是新手,请帮助我,我在带有 4 列的表中有数据,如下所示:
+---------------------+
| id ah av score |
+---------------------+
| 1 A A 1 |
| 2 A B 2 |
| 3 B A 0.5 |
| 4 B B 0.14 |
+---------------------+
我想输出这样的查询结果
+-------------------+
| Type A B |
+-------------------+
| A 1 2 |
| B 0.5 0.14 |
+-------------------+
SELECT ah type
, MAX(CASE WHEN av = 'A' THEN score END) 'A'
, MAX(CASE WHEN av = 'B' THEN score END) 'B'
FROM my_table
GROUP
BY ah;
+------+------+------+
| type | A | B |
+------+------+------+
| A | 1.00 | 2.00 |
| B | 0.50 | 0.14 |
+------+------+------+
您的问题需要一个数据透视表,因为您正在"透视"其中一列以成为一行。
首先创建一个包含您需要的所有数据的视图(几乎放弃了 ID):
create view Scores_Simple as (
select
ah as Type,
case when av = "A" then Score end as A,
case when av = "B" then Score end as B
from Scores
);
然后对表进行透视:
create view Scores_Simple_Pivot as (
select
Type,
sum(A) as A,
sum(B) as B
from Scores_Simple
group by Type
);
在这里测试