2013-05-08 3 views
0

diff 테이블에서 다중 선택을 시도하고 하나의 열에 결과 만 표시하려고합니다. 이와하나의 쿼리에서 다중 선택 [Teradata]

593643 
18103600 
0 

문제는 결과가 내림차순 순서에 배치되는 점이다 같은

SELECT COUNT(*) FROM tb1 union 
SELECT COUNT(*) FROM tb2 union 
SELECT COUNT(*) FROM tb3; 

출력해야한다. 다음과 같이 : 나는 선택 문을 넣어

0 
593643 
18103600 

나는 결과가되고 싶은 것이다. 알려주십시오. Btw, 나는 테라 데이타를 사용하고있다. 감사합니다.

답변

3

SQL 결과 세트는, 본질적으로 순서가있다 절. 하위 쿼리로 수행 할 수 있습니다.

select cnt 
from ((SELECT COUNT(*) as cnt, 1 as ord FROM tb1) 
     union all 
     (SELECT COUNT(*), 2 FROM tb2) 
     union all 
     (SELECT COUNT(*), 3 FROM tb3) 
    ) t 
order by ord 
3

특정 주문을 원할 경우 ORDER BY 절을 추가하십시오. 또한, 그래서 당신은 항상 심지어 중복 결과 3 행 (두 테이블 같은 수의 행을 갖는) 얻을 UNION ALL를 사용하는 것이 좋은 것입니다 : 당신이 명시 적으로 order by를 지정하지 않는

SELECT 'tbl1' AS tablename, COUNT(*) AS cnt, 1 AS ord FROM tb1 UNION ALL 
SELECT 'tbl2', COUNT(*), 2 FROM tb2 UNION ALL 
SELECT 'tbl3', COUNT(*), 3 FROM tb3 
ORDER BY ord ; 
관련 문제