union all 과 order by 질문드립니다. 0 2 3,265

by 안녕하세요 [SQL Query] db2 query order by union all [2021.10.25 19:42:01]


union all 과 order by를 같이 사용하고자 할 때는 order by를 서브쿼리 안에 넣으면 된다고 인터넷에 많이 나옵니다.

그런데 이상하게 제 쿼리에서는 서브쿼리 자체에서는 order by가 잘 되는데 쿼리 전체를 돌리면 순서가 뒤죽박죽 됩니다.

SELECT ACC, ACCN, DTL, GNRL, STAM

FROM (  SELECT
              A.ACC, B.ACCN, B.DTL, SUM(A.GNRL), SUM(A.STAM 
             FROM DNU A
             LEFT OUTER JOIN DNU2 B
             ON A.ACC=B.ACC AND A.DTL=B.DTL
             WHERE   A.BSY='202108'
             GROUP BY A.ACC, B.ACCN, B.DTL
             ORDER BY A.ACC) FR

UNION ALL

SELECT 
~~~~
FROM
~~~~

            

FR 쿼리는 순서대로 잘나오는데

UNION ALL 위의 쿼리전체 쿼리로 돌리면 순서가 뒤죽박죽입니다.. 

왜 그럴까요?ㅜ

DB2 사용하고 있습니다

by 마농 [2021.10.25 19:59:44]

인라인뷰 안에서의 정렬은 무의미하다고 판단되어
정렬이 무시되는 경우가 있습니다. (MySQL)

SELECT 1 gb
     , a.acc, b.accn, b.dtl
     , SUM(a.gnrl) gnrl
     , SUM(a.stam) stam
  FROM dnu a
  LEFT OUTER JOIN dnu2 b
    ON a.acc = b.acc
   AND a.dtl = b.dtl
 WHERE a.bsy = '202108'
 GROUP BY a.acc, b.accn, b.dtl
 UNION ALL
SELECT 2 gb
     , '합계', null, null
     , SUM(a.gnrl) gnrl
     , SUM(a.stam) stam
  FROM dnu a
  LEFT OUTER JOIN dnu2 b
    ON a.acc = b.acc
   AND a.dtl = b.dtl
 WHERE a.bsy = '202108'
 ORDER BY 1, 2
;

 


by 안녕하세요 [2021.10.25 20:05:55]

대박입니다..^^b

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입