我试图在我的sysobjects表中找到最大日期,这些表的数据类型为日期时间、日期和时间。
我使用以下查询查找表列表:
select so.name table_name ,sc.name column_name ,st.name data_type
from sysobjects so
inner join syscolumns sc on (so.id = sc.id)
inner join systypes st on (st.type = sc.type)
where so.type = 'U'
and st.name IN ('DATETIME', 'DATE', 'TIME')是否可以修改查询以便为每个记录找到最大日期?我可以声明一个变量来接受列表中的列名并将max()函数应用到它们吗?
发布于 2016-06-02 16:13:25
您可以使用原始查询和动态SQL实现这一点:
DECLARE @sql NVARCHAR(MAX);
SELECT @sql = STUFF((
SELECT 'UNION ALL SELECT ''' + so.name + '.' + sc.name + ''', MAX([' + sc.name + ']) FROM [' + so.name + '] '
FROM sys.sysobjects so
INNER JOIN sys.syscolumns sc ON (so.id = sc.id)
INNER JOIN sys.systypes st ON (st.xtype = sc.xtype)
WHERE so.type = 'U' AND
st.name IN ('DATETIME', 'DATE', 'TIME')
FOR
XML PATH('')
), 1, 9, '');
EXEC sp_executesql @sql;阅读以下内容可能会使您受益:
https://stackoverflow.com/questions/37596625
复制相似问题