首页 > 解决方案 > 获取所有表的已过滤记录的已用 MB 和行数

问题描述

我在 SQL Server 中的查询有问题。我想获取每个表在 2020 年创建的记录的总数和已用磁盘空间(我SysDateCreate在所有表中都有一列)。我想要这样的“表格结果”:

| Year | TableName | TotalRowCont | Total_MB |

我写了这个查询:

SELECT
    NULL AS Year,
    sys.tables.name AS TableName, 
    MAX(sys.partitions.rows) AS TotalRowCount,
    CAST(ROUND((SUM(sys.allocation_units.used_pages) / 128.00), 2) AS NUMERIC(36, 2)) AS Used_Mb,
    CAST(ROUND((SUM(sys.allocation_units.total_pages) - SUM(sys.allocation_units.used_pages)) / 128.00, 2) AS NUMERIC(36, 2)) AS Unused_Mb,
    CAST(ROUND((SUM(sys.allocation_units.total_pages) / 128.00), 2) AS NUMERIC(36, 2)) AS Total_Mb
FROM sys.tables
INNER JOIN sys.indexes ON sys.tables.object_id = sys.indexes.object_id
INNER JOIN sys.partitions ON sys.indexes.object_id = sys.partitions.object_id AND sys.indexes.index_id = sys.partitions.index_id
INNER JOIN sys.allocation_units ON sys.partitions.partition_id = sys.allocation_units.container_id
WHERE sys.tables.name LIKE 'Tb%' 
GROUP BY sys.tables.name
ORDER BY sys.tables.name

如何按年份过滤/分组?

提前致谢。

标签: sqlsql-servertsql

解决方案


推荐阅读