简单地说,我的问题是如果可能的话如下。我这样做的方式不起作用,但也许有一些替代解决方案。
SELECT
ID,
Semester,
Class,
Sum(Hours) as Hours
FROM Student
GROUP BY
Case '&GroupType'
When 'Semester_Class' Then Semester || Class
When 'Semester' Then Semester
When 'Class_Semester' Then Class || Semester
When 'Class' Then Class
When 'Summary' Then ID
End
当然,这不起作用(并且不应该)但这将是概念。 (注意,这适用于Order By
条款)。如果用户选择&GroupType
Semester_Class
,报告将汇总每个学期一个班级类型(例如英语101)的总小时数。
我认为我只是在做梦,如果没有PL / SQL(或者甚至可能),这是不可能的。但是,我认为有人可能会有一个聪明的解决方案。
如果需要进一步说明,请告诉我。
答案 0 :(得分:0)
您的查询无效,因为select
中的列与group by
中的列不匹配。
你可以这样做(假设你正在使用PL / SQL):
select (Case :GroupType
When 'Semester_Class' Then Semester || Class
When 'Semester' Then Semester
When 'Class_Semester' Then Class || Semester
When 'Class' Then Class
When 'Summary' Then ID
End
) as which, count(*)
from Student
group by (Case :GroupType
When 'Semester_Class' Then Semester || Class
When 'Semester' Then Semester
When 'Class_Semester' Then Class || Semester
When 'Class' Then Class
When 'Summary' Then ID
End
);