显示只有少于4列而没有group by的表

时间:2013-11-10 19:34:07

标签: sql sql-server

显示all_tab_columns少于4列的所有表,其中owner ='GYS'并以'COL'开头,而不使用按功能分组。

尝试使用count / max函数时出错。任何想法将不胜感激!

2 个答案:

答案 0 :(得分:1)

此查询将为您提供数据库中所有表的名称,其中列数小于4

SELECT TABLE_NAME, COUNT(Column_Name) NumOfCols
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_NAME
HAVING COUNT(Column_Name) < 4

答案 1 :(得分:0)

declare
       cursor c1 
       is 
        select t.table_name, t.column_name, t.owner, 
       (select count('table_name.column_name') 
       from all_tab_columns ct where ct.table_name = t.table_name ) 
       as namecounter 
       from all_tab_columns t where t.owner ='GYS' and t.table_name like 'COL%';

       b1 c1%rowtype;
       tab_count number(10);
       temp_column varchar2(100);
begin
    open c1;
      loop
            fetch c1 into b1;

                  temp_column := b1.namecounter;
                  while temp_column <4 
                  loop
                  dbms_output.put_line(b1.table_name||b1.column_name||b1.namecounter);
                  tab_count:=c1%rowcount;
                  dbms_output.put_line(tab_count);
                  end loop;
       end loop;   
   close c1;
end;
/

我终于解决了上述问题但是在执行速度方面它运行得非常慢,任何提高性能的想法都会受到赞赏!