代码之家  ›  专栏  ›  技术社区  ›  moodymudskipper

分别计算每列的不同值

  •  3
  • moodymudskipper  · 技术社区  · 7 年前

    我可以在不枚举的情况下计算每列的不同值吗?

    假设我有一张桌子 col1 , col2 , col3 ,没有其他列。在不明确提及这些列的情况下,我希望得到与以下相同的结果:

    SELECT
    count(distinct col1) as col1,
    count(distinct col2) as col2,
    count(distinct col3) as col3
    FROM mytable;
    

    我该怎么做?

    1 回复  |  直到 4 年前
        1
  •  2
  •   kfinity    7 年前

    我认为使用普通SQL可以轻松完成的最好操作是运行这样的查询来生成所需的查询,然后运行它。

    select 'select count(distinct '
        || listagg(column_name || ') as ' || column_name, ', count(distinct ') within group (order by column_id) 
        || ' from ' || max(table_name) || ';' as script
    from all_tab_cols
    where table_name = 'MYTABLE';