0

我对两个查询使用相同的表和列,但我有不同的别名和 avg 函数。我如何能够将这两个查询与 UNION ALL 结合起来,因为我想要从它们中选择的每一行。显然,当我有不同的选择语句时,我不能这样做。我怎样才能结合这两个查询?

SELECT GRADE_TYPE_CODE, ROUND(TO_CHAR(NUMERIC_GRADE),2) AS GRADE
FROM GRADE
WHERE STUDENT_ID = 10 AND SECTION_ID = 5
ORDER BY GRADE_TYPE_CODE DESC,NUMERIC_GRADE DESC;



SELECT 'Average is:' AS GRADE_TYPE_CODE,AVG(GRADE) AS GRADE
FROM
(
    SELECT AVG(NUMERIC_GRADE) AS GRADE
FROM GRADE
WHERE STUDENT_ID = 10 AND SECTION_ID = 5
GROUP BY GRADE_TYPE_CODE
) myInnerTable;
4

2 回答 2

3

不知道这里有什么问题。为什么不在两个查询之间加上“union all”,然后将 ORDER BY 子句移到末尾?

SELECT GRADE_TYPE_CODE, ROUND(TO_CHAR(NUMERIC_GRADE),2) AS GRADE
FROM GRADE
WHERE STUDENT_ID = 10 AND SECTION_ID = 5

union all

SELECT 'Average is:' AS GRADE_TYPE_CODE,AVG(GRADE) AS GRADE
FROM
(
    SELECT AVG(NUMERIC_GRADE) AS GRADE
FROM GRADE
WHERE STUDENT_ID = 10 AND SECTION_ID = 5
GROUP BY GRADE_TYPE_CODE
) myInnerTable

order by 1 desc, 2 desc

http://sqlfiddle.com/#!4/99a16/19/0

于 2013-11-02T01:47:27.037 回答
1

我想你可以创建一个临时表,然后从两个单独的查询中合并 ALL。

于 2013-11-02T01:26:44.667 回答