首页 > 解决方案 > SQL COUNT 列中的所有行

问题描述

我需要计算所有行并将其写入 ORACLE SQL 中的列。它应该看起来像这样(左边是,右边是它应该看起来的样子):

|A|B|C|D|      |A|COUNT_A|B|COUNT_B|C|COUNT_C|D|COUNT_D|
 - - - -        - ------- - ------- - ------- - -------
|1|2|3| |  ==> |1|   2   |2|   3   |3|   3   | |   0   |
|1|3|4| |  ==> |1|   2   |3|   3   |4|   3   | |   0   |
| |3|4| |      | |   2   |3|   3   |4|   3   | |   0   |

我已经尝试过诸如 COUNT(*) OVER (PARTITION BY)、UNION 之类的一些东西

先感谢您。

标签: sqloraclecountrowsanalytic-functions

解决方案


您可以使用窗口函数:

select a, count(a) over () as cnt_a,
       b, count(b) over () as cnt_b,
       c, count(c) over () as cnt_c,
       d, count(d) over () as cnt_d
from t;
   

推荐阅读