【发布时间】:2018-08-24 20:43:26
【问题描述】:
以下查询每个 ID 返回两行。
select distinct ID,
count (COURSE_IDENTIFICATION) as tot_course_id,
COUNT(case when course_level = 'G'
then (COURSE_IDENTIFICATION)
else '0'end) count_grad,
COUNT (case when course_level = 'U'
then (COURSE_IDENTIFICATION)
else '0'end) count_under
from ods.STUDENT_COURSE
where ACADEMIC_PERIOD = '201890'
and COURSE_BILLING_CREDITS >0.0
group by ID, course_level
order by 1
我收到以下结果:
ID |TOT_COURSE_NUM |COUNT_GRAD |COUNT_UNDER
-------------------------------------------------
12345 |1 |1 |1
12345 |2 |2 |2
有什么方法可以确保研究生和本科生的总数都计入同一行?
【问题讨论】:
-
是的,很简单:从
GROUP BY中删除course_level。 -
您也可以从您的选择中删除
DISTINCT关键字。它没有伤害任何东西,但GROUP BY已经返回不同的结果。 -
那是一个case 表达式,而不是一个语句