1. 程式人生 > >Oracle將多個查詢結果以列的形式合併在一起

Oracle將多個查詢結果以列的形式合併在一起

--問題:查詢部門的平均工資 崗位的平均工資 每個部門的每個崗位的平均工資

且將其在一個查詢中展示

思路:首先分別查出這三張表 假設為A B C 然後利用兩兩結合 先將A B結合由於它

們之間沒有任何關係 所以想要連線它們需要使用rownum 利用完全外連線和rownum相等 使A B表以欄位的形式(而不是以行的形式)連線在一起這樣的話就可以實現將不同表中的資料以列的形式合併在一起(之所以這麼 麻煩是因為union union all minus intersect是以行的形式將多個查詢結果合併在一起的 想要實現以列的形式將多個查詢結果合併在一起的話就需要藉助rownum和(完全)外連線來實現) 解決這個問題的核心就是rownum

和完全外連線

具體程式碼:

    select e3.部門平均工資, e3.崗位平均工資, e44.部門崗位平均工資 from         

            (select e11.部門平均工資, e22.崗位平均工資, rownum rn from

                (select e1.部門平均工資, rownum rn from

                    (select avg(sal) 部門平均工資 from

                        emp group bydeptno)e1)e11

                full join

                (select e2.崗位平均工資, rownum rn from

                    (select avg(sal) 崗位平均工資 from

                         emp group by job)e2)e22

                on e11.rn = e22.rn)e3

            full join

            (select e4.*, rownum rn from

                (select avg(sal) 部門崗位平均工資 from

                    emp group by deptno,job)e4)e44

            on e3.rn = e44.rn;