我有一张桌子' tbl_marks'像这样,
content
然后我需要在过滤术语1后显示以下结果
st_index Subject Term Marks
----------------------------------------
13110 Maths 1 60
13110 Maths 2 70
13110 Maths 3 80
13110 Science 1 70
13110 Science 2 70
13110 Science 3 80
13111 Maths 1 90
13111 Maths 2 70
13111 Maths 3 80
13111 Science 1 80
13111 Science 2 70
13111 Science 3 80
对于我使用此代码的移动,没有预期的输出
st_index Maths Science
--------------------------------
13110 60 70
13111 90 80
答案 0 :(得分:1)
您非常接近,您只需要使用聚合函数包裹CASE EXPRESSION
,例如MAX()/MIN()
:
SELECT st_index,
MAX(case when subject='Maths' then marks end) as Maths,
MAX(case when subject='Science' then marks end) as Science
FROM tbl_marks
where term=1
group by st_index
顺便说一句 - 这称为条件聚合,与pivot相同,但它们是两个不同的东西。