T-SQL - 对具有相同列名的多个表进行操作的查询

T-SQL - Query that operates on multiple tables that have the same column name

我正在尝试对 SQL 服务器数据库进行一些调查和报告,我的目标看起来很简单,但我的大脑就是没有把它放在一起。

目标是找到每个 table 中在特定日期之前创建的记录总数。数据库中的大多数(但不是全部)table 有一个列 "created",所以我只需要找到所有具有该列的 table 和 运行 上的查询他们。

我可以轻松找到所有合适的 table 名称:

select table_name from INFORMATION_SCHEMA.COLUMNS where column_name = 'created'

下一步是将其与:

select count(*) from ... where created <= date_i_care_about

有没有不用循环的简单方法?

如果这是一次性工作(不用于自动化),我想你可以复制结果 下面的查询并执行它:

DECLARE @date AS DATETIME
SET @date = '2014-01-01'
SELECT 'SELECT ''' + OBJECT_NAME(object_id) + ''' AS [Table], COUNT(*) AS [Count] FROM [' + OBJECT_NAME(object_id) + '] WHERE [created] <= ''' + CONVERT(VARCHAR, @date, 20) + '''' FROM sys.columns WHERE name = 'created'

希望这对您有所帮助...