SQL Loop through all tables and get the max value from a specific column

后端 未结 2 1090
没有蜡笔的小新
没有蜡笔的小新 2021-01-28 21:36

I\'m trying to create an audit table that checks the loaded date for that table.

Basically, I want to loop through all tables in the database and check for a specific co

2条回答
  •  不要未来只要你来
    2021-01-28 22:14

    You can try this code, but it will consume some time

    SELECT TABLE_NAME,TABLE_SCHEMA
    INTO #TableList 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE column_name = 'LoadedDate'
    
    CREATE TABLE #TempResult (TableName VARCHAR(100), MaxDate DATETIME2)
    
    DECLARE @TableName      VARCHAR(100)
            ,@TableSchema   VARCHAR(100)
    DECLARE @SqlQuery   NVARCHAR(MAX)
    
    WHILE(EXISTS(SELECT TOP(1) * FROM #TableList))
    BEGIN
        SELECT TOP(1) @TableName = TABLE_NAME, @TableSchema = TABLE_SCHEMA FROM #TableList
        DELETE #TableList WHERE TABLE_NAME = @TableName
    
        SET @TableName = @TableSchema +'.'+ @TableName
        SET @SqlQuery = 'SELECT '''+@TableName+''' AS ''TableName'', MAX(UpdatedDate) AS MaxDate FROM '+ @TableName
        INSERT INTO #TempResult
        EXECUTE sp_executesql @SqlQuery
    END
    
    
    SELECT * from #TempResult
    
    DROP TABLE #TableList
    DROP TABLE #TempResult
    

提交回复
热议问题