はい、次のようにできます。
USE tempdb
IF OBJECT_ID(N'#temp') IS NOT NULL DROP TABLE #temp
CREATE TABLE #temp (
TableName nvarchar(max),
MaxEventDateTime datetime
)
USE YourDatabaseName
INSERT INTO #temp
exec sp_MSforeachtable 'SELECT ''?'', MAX([EventDateTime]) FROM ?'
SELECT *
FROM #temp
注:sp_MSforeachtable
は文書化されていないストアド プロシージャであり、重要な生産プロセスで使用することはお勧めしません。
動的 SQL ソリューションをお勧めします。
USE tempdb
IF OBJECT_ID(N'#temp') IS NOT NULL DROP TABLE #temp
CREATE TABLE #temp (
TableName nvarchar(max),
MaxEventDateTime INT
)
USE YourDatabaseName
DECLARE @sql nvarchar(max)
SELECT @sql = (
SELECT 'INSERT INTO #temp SELECT '''+[name]+''', MAX([EventDateTime]) FROM '+QUOTENAME([name])+';'+CHAR(10)
FROM sys.tables
FOR XML PATH('')
)
--PRINT @sql
EXEC sp_executesql @SQL
PRINT @sql
次のようなクエリが表示されます。
USE [Test] INSERT INTO #temp SELECT 'TABLE_A', COUNT(*) FROM [TABLE_A];
USE [Test] INSERT INTO #temp SELECT 'TABLE_B', COUNT(*) FROM [TABLE_B];
USE [Test] INSERT INTO #temp SELECT 'TestXml', COUNT(*) FROM [TestXml];
USE [Test] INSERT INTO #temp SELECT 'Clients', COUNT(*) FROM [Clients];
動的 SQL ソリューションを使用することをお勧めします。