Sql server 您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用QUOTENAME,而不是

Sql server 您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用QUOTENAME,而不是,sql-server,tsql,dynamic,aggregation,information-schema,Sql Server,Tsql,Dynamic,Aggregation,Information Schema,您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。 DECLARE @sqlStatement NVARCHAR(MAX) = ''; WITH CTE AS ( SELECT SCH.[name] AS [


您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用
QUOTENAME
,而不是通过串联添加
[]
。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用
QUOTENAME
,而不是通过串联添加
[]
。我注意到在您的示例中,我将开始尝试使用它。
DECLARE @sqlStatement NVARCHAR(MAX) = '';

WITH CTE AS
(
    SELECT
        SCH.[name] AS [Schema]
        ,TAB.[name] AS [Table]
        ,COL.[name] AS [Column]
    FROM sys.columns AS COL
        JOIN sys.tables AS TAB
            ON COL.[object_id] = TAB.[object_id]
        JOIN sys.schemas AS SCH
            ON TAB.[schema_id] = SCH.[schema_id]
    WHERE COL.system_type_id NOT IN (104,240)
)

SELECT @sqlStatement += 

        'UNION ALL
        SELECT 
            '''+[Schema]+''' AS [Schema]
            ,'''+[Table]+''' AS [Table]
            ,'''+[Column]+''' AS [Column]
            ,CONVERT(NVARCHAR(MAX),MAX(['+[Column]+'])) AS ColumnMax
            ,CONVERT(NVARCHAR(MAX),MIN(['+[Column]+'])) AS ColumnMin
        FROM ['+[Schema]+'].['+[Table]+']
        '
FROM CTE
;

SET @sqlStatement = STUFF(@sqlStatement,1,10,'');

EXEC sp_executesql @sqlStatement;
DECLARE @cmd NVARCHAR(MAX)=
(
    SELECT STUFF(
    (
            SELECT ' UNION ALL SELECT ''' + c.TABLE_SCHEMA + ''' AS TableSchema '
                 + ',''' + c.TABLE_NAME + ''' AS TableName '
                 + ',''' + c.COLUMN_NAME + ''' AS ColumnName '
                 + ',''' + c.DATA_TYPE + ''' AS ColumnType '
                 + ',CAST(MIN(' + QUOTENAME(c.COLUMN_NAME)+') AS NVARCHAR(MAX)) AS MinValue ' 
                 + ',CAST(MAX(' + QUOTENAME(c.COLUMN_NAME)+') AS NVARCHAR(MAX)) AS MaxValue ' 
                 + ' FROM ' + QUOTENAME(c.TABLE_SCHEMA) + '.' + QUOTENAME(c.TABLE_NAME)
                 + ' WHERE ' + QUOTENAME(c.COLUMN_NAME) + ' IS NOT NULL'
            FROM INFORMATION_SCHEMA.COLUMNS AS c
            WHERE c.DATA_TYPE IN('bigint','float','int','datetime') --add all types you want to check, be aware of implicit conversions!
            FOR XML PATH(''),TYPE
    ).value('.','nvarchar(max)'),1,10,'')
);
--PRINT @cmd
EXEC(@cmd);