2013-11-02 6 views
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; 
+0

У вас есть grade_type_code со значением 'Средняя является:' ???? –

+0

Да, я бы отобразил его именно так, как эти два вопроса. Поэтому я хотел бы объединить их. – Manual

ответ

3

Не знаете, в чем проблема. Почему бы просто не поставить «союз все» между двумя вашими запросами и переместить предложение 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

У меня возникли проблемы с «заказом» .. спасибо – Manual

Смежные вопросы