通过所有列计算所有行,并返回列名和行数

时间:2019-02-19 09:56:02

标签: sql sql-server group-by unpivot

我想总结一个包含很多列的表格,任何建议

Select column(names), Count(*)
from table
Group by column(names)

导致

**Cloumn** **Count**
Column 1    24
Column 2    75
column 3    35

。 。 。 。 。

2 个答案:

答案 0 :(得分:1)

我会使用APPLY

SELECT tt.colname, COUNT(*)
FROM table t CROSS APPLY
     ( VALUES ('Column1'), ('Column2'), ('Column3'), . . 
     ) tt (colname)
GROUP BY tt.colname;

如果您只想计算非空值,则还要包括列值:

SELECT tt.colname, COUNT(tt.colval)
FROM table t CROSS APPLY
         ( VALUES ('Column1', Column1), 
                  ('Column2', Column2), 
                  ('Column3', Column3), 
                  . . .
         ) tt (colname, colval)
GROUP BY tt.colname;

答案 1 :(得分:0)

假设大多数人将Microsoft SQL Server引用为SQL(不正确,但很常见),就取消它们

SELECT ColumnName, Count(Value)
FROM (
    SELECT ColumnName, Value
    FROM yourTable
    CROSS APPLY (
        VALUES('Column1', Column1),('Column2', Column2),('Column3', Column3)
    ) A(ColumnName, Value)
) T
GROUP BY ColumnName
相关问题