在一个查询中选择多项[Teradata]

mys*_*lls 0 sql oracle select count teradata

我正在尝试从差异表中进行多个选择,并且只将结果放在一列中。

SELECT COUNT(*) FROM tb1 union
SELECT COUNT(*) FROM tb2 union
SELECT COUNT(*) FROM tb3;
Run Code Online (Sandbox Code Playgroud)

输出应该像这样:

 593643
 18103600
 0
Run Code Online (Sandbox Code Playgroud)

这样的问题是结果按降序排列。如下所示:

 0
 593643
 18103600
Run Code Online (Sandbox Code Playgroud)

我希望结果像我输入的select语句一样。请指教。顺便说一句,我正在使用Teradata。谢谢。

Gor*_*off 5

SQL结果集本质上是无序的,除非您明确指定order by子句。您可以使用子查询来执行此操作:

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
Run Code Online (Sandbox Code Playgroud)