[英]select the max(date) and table name as columns
我有很多桌子,例如:
A_names
(更新日期) B_names
(updated_at date) C_names
(updated_at date) 我想要数据库中所有表(如'%names%'
的updated_date和表名最大
select * into #temp1
from INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like '%names%'
怎么做 ..? 提前致谢
尝试这个 :-
Select name ,modify_date from sys.tables
where name like '%names'
并避免使用INFORMATION_SCHEMA.TABLES
而是使用目录视图。
SELECT MAX(updated_at_date)
FROM table1
我对有关表名的描述有些困惑。 无论如何,这是您选择最大日期的方式。
动态创建一个SQL语句,然后运行该命令。
DECLARE @dml nvarchar(max) = N''
SELECT @dml += ' UNION ALL SELECT ''' + name + ''' AS tableName, MAX(updated_at) AS maxUpdated_at FROM '
+ QUOTENAME(name)
FROM sys.tables
WHERE name like '%names%'
PRINT @dml
SET @dml = STUFF(@dml, 1, 10, '')
EXEC sp_executesql @dml
不带STUFF功能的选件
DECLARE @dml nvarchar(max)
SELECT @dml = ISNULL(@dml + ' UNION ALL', '') + ' SELECT ''' + name + ''' AS tableName, MAX(updated_at) AS maxUpdated_at FROM '
+ QUOTENAME(name)
FROM sys.tables
WHERE name like '%names%'
EXEC sp_executesql @dml
可能Praveen的答案是解决您的问题的方法,但使用伪代码
DECLARE @SqlStmt NVARCHAR(2000)
For Each TableName in 'Select name from sys.tables'
{
if @SqlStmnt <> '' @SqlStmnt = @SqlStmnt + ' UNION '
@sqlStmnt = @sqlStmnt + ' SELECT Max(updated_at_date) AS MAXDATE FROM ' + TableName
}
**EXECUTE ('SELECT MAX(MAXDATE) FROM (' + @SqlStmt + ')')**
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.