by 안녕하세요 [SQL Query] db2 query order by union all [2021.10.25 19:42:01]
union all 과 order by를 같이 사용하고자 할 때는 order by를 서브쿼리 안에 넣으면 된다고 인터넷에 많이 나옵니다.
그런데 이상하게 제 쿼리에서는 서브쿼리 자체에서는 order by가 잘 되는데 쿼리 전체를 돌리면 순서가 뒤죽박죽 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 사용하고 있습니다
인라인뷰 안에서의 정렬은 무의미하다고 판단되어
정렬이 무시되는 경우가 있습니다. (MySQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 ; |