Execute query by replacing @Datefield with the name of the column used for calculating max date.
2017-12-14
1,213 reads
Execute query by replacing @Datefield with the name of the column used for calculating max date.
IF OBJECT_ID('tempdb..#Tables') is not null begin drop table #Tables end Create Table #Tables ( idx int IDENTITY(1,1), TableName varchar(100) ) IF OBJECT_ID('tempdb..#Result') is not null begin drop table #Result end Declare @DateColumn varchar(100), @TablesFetchSql nvarchar(max) /*Replace this with appropriate Date column.*/SET @DateColumn='EffectiveDate' Create Table #Result ( TableName varchar(1000), MaxDate datetime, SqlStatement varchar(1000) ) SET @TablesFetchSql=N' select ss.[name]+''.''+so.[name] from DBName.sys.tables so join DBName.sys.schemas ss on so.schema_id=ss.schema_id where so.object_id in ( select id from DBName.dbo.syscolumns where [name]=''@DateColumn'' )' Select @TablesFetchSql=replace(@TablesFetchSql,'DBName',db_name()) Select @TablesFetchSql=replace(@TablesFetchSql,'@DateColumn',@DateColumn) --SELECT @TablesFetchSql insert #Tables execute sp_executesql @TablesFetchSql Declare @idx int, @ubound int, @sqlcmd nvarchar(1000), @TableName varchar(1000) set @idx=1 Select @ubound=(select max(idx) from #Tables) while @idx<=@ubound begin Select @TableName=TableName from #Tables where idx=@idx set @sqlcmd=N' select max('+@DateColumn+') Max'+@DateColumn+','''+@Tablename+''' TableName from '+db_name()+'.'+@TableName+'(NOLOCK)' insert #Result ( MaxDate, TableName ) exec (@sqlcmd) Update #Result set SqlStatement=@sqlcmd where TableName=@Tablename SET @idx=@idx+1 end /*End Script*/ /*Output*/ select * from #Result