2013-11-02 106 views
0

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

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; 
+0

你跟的值的grade_type_code '平均是:' ???? –

+0

是的,我只想按照这两个查询的方式显示它。所以我想结合他们。 – Manual

回答

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

+0

我遇到了“order by”的问题..谢谢 – Manual