Sql 如何按表的列号对输出进行排序?

Sql 如何按表的列号对输出进行排序?,sql,oracle,sorting,Sql,Oracle,Sorting,下面是我当前的sql输出表,其中包含“SERVICE\u ID”和“SERVICE\u NAME”列 select T1.column_name ||','||T2.column_name, T1.table_name from all_tab_columns T1, all_tab_columns T2 where T1.column_name = 'SERVICE_ID' and T2.column_name = 'SERVICE_NAME' and T1.table_name = T2

下面是我当前的sql输出表,其中包含“SERVICE\u ID”和“SERVICE\u NAME”列

select T1.column_name ||','||T2.column_name, T1.table_name 
from all_tab_columns T1, all_tab_columns T2
where T1.column_name = 'SERVICE_ID' and T2.column_name = 'SERVICE_NAME' 
and T1.table_name = T2.table_name and T1.owner = T2.owner;

我的问题是如何按照“T1.table_name”对输出进行排序,即无论哪个表的总列数最少,都要先输出

您还可以使用条件聚合编写查询。然后,
having
子句可以得到包含两列的表,您可以先按列数最多的表排序:

select 'SERVICE_ID, SERVICE_NAME', t.table_name
from all_tab_columns t
group by t.table_name
having sum(case when t.column_name in ('SERVICE_ID', 'SERVICE_NAME') then 1 else 0 end) = 2
order by count(*) DESC;

请注意,我在
SELECT
中硬编码了列名。您也可以在您的版本中这样做。

您好,欢迎来到StackOverflow,下次尝试提供一个模式和一些数据,以便我们能够更好地理解问题并更快地为您提供答案–请阅读并包括您的rdbms、示例数据和desire输出。我添加了Oracle标记,因为
所有的选项卡列都会尖叫“oracle”。感谢您的快速帮助!