如何使输出按表的列号排序?

时间:2015-10-09 18:49:42

标签: sql oracle sorting

这是我当前的sql输出表,其中包含" SERVICE_ID"和" SERVICE_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"排序,哪个表的总列数最少,先输出?

1 个答案:

答案 0 :(得分:0)

您还可以使用条件聚合编写查询。然后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中对列名进行了硬编码。您也可以在您的版本中执行此操作。