【发布时间】:2020-09-22 09:33:13
【问题描述】:
我想找到整个数据库中所有表的每一列的记录数。该计数必须排除该列的空行和空白行。我尝试了以下代码,但它显示了该表的行数。
select
db_name() DatabaseName,
s.name + '.' + o.name TableName, c.name ColumnName, sum(p.rows) RecordCount
from sys.indexes i inner join sys.partitions p
on i.[object_id] = p.[object_id] and i.index_id = p.index_id
inner join sys.objects o
on o.[object_id] = i.[object_id]
inner join sys.columns c
on o.[object_id] = c.[object_id]
inner join sys.schemas s
on o.[schema_id] = s.[schema_id]
where i.index_id < 2
--and s.name in ('dbo', 'your_other_schema')
and o.type = 'U'
group by s.name, o.name , c.name
order by s.name, o.name;
代码输出。
https://i.stack.imgur.com/kNNRZ.png
列 system_id 有 5767 行计数,而 objectstate 只有 2589 行计数(不包括空白和空值)
所以我希望 OBJECTSTATE 列数为 2589,SYSTEM_ID 数为 5767
输出喜欢
Table Column Count
Table1 Column1 50 (excluding null and blank row)
Table1 Column2 45 (excluding null and blank row)
Table2 Column1 100 (excluding null and blank row)
Table2 column2 69 (excluding null and blank row)
【问题讨论】:
标签: sql-server rowcount col