0

両方のクエリに同じテーブルと列を使用していますが、エイリアスと avg 関数が異なります。これらの 2 つのクエリを UNION ALL と組み合わせるにはどうすればよいでしょうか。それらから選択したすべての行が必要なためです。異なる選択ステートメントがある場合、明らかにそれを行うことはできません。これら 2 つのクエリをどのように組み合わせることができますか?

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

ここで何が問題なのかわかりません。2 つのクエリの間に "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

一時テーブルを作成してから、2 つの個別のクエリから ALL を結合できると思います。

于 2013-11-02T01:26:44.667 に答える