sql >> Database teknologi >  >> RDS >> Sqlserver

Find minimum og maksimum kolonneværdi for en fælles kolonne på tværs af alle tabeller i en SQL Server 2008-database

Noget som det følgende burde virke

DECLARE @C1           AS CURSOR,
        @TABLE_SCHEMA SYSNAME,
        @TABLE_NAME   SYSNAME,
        @HasCreated   BIT,
        @HasUpdated   BIT,
        @MaxDate      DATETIME,
        @MinDate      DATETIME,
        @SQL          NVARCHAR(MAX) 

SET @C1 = CURSOR FAST_FORWARD FOR 
SELECT TABLE_SCHEMA,
       TABLE_NAME,
       COUNT(CASE
               WHEN COLUMN_NAME = 'CREATED_DATETIME' THEN 1
             END) AS HasCreated,
       COUNT(CASE
               WHEN COLUMN_NAME = 'UPDATED_DATETIME' THEN 1
             END) AS HasUpdated
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  COLUMN_NAME IN ( 'CREATED_DATETIME', 'UPDATED_DATETIME' )
GROUP  BY TABLE_SCHEMA,
          TABLE_NAME 


OPEN @C1;

FETCH NEXT FROM @C1 INTO @TABLE_SCHEMA , @TABLE_NAME , @HasCreated , @HasUpdated ;
WHILE @@FETCH_STATUS = 0
BEGIN

SET @SQL = N'
SELECT @MaxDate = MAX(D),
       @MinDate = MIN(D)
FROM   ' + QUOTENAME(@TABLE_SCHEMA) + '.' + QUOTENAME(@TABLE_NAME) + N' 
       CROSS APPLY (VALUES ' + 
                  CASE WHEN @HasCreated = 1 THEN N'(CREATED_DATETIME),' ELSE '' END + 
                  CASE WHEN @HasUpdated = 1 THEN N'(UPDATED_DATETIME),' ELSE '' END + N'
                           (@MaxDate),
                           (@MinDate)) V(D) 

'

EXEC sp_executesql 
    @SQL,
    N'@MaxDate datetime OUTPUT, @MinDate datetime OUTPUT', 
    @MaxDate = @MaxDate OUTPUT, 
    @MinDate = @MinDate OUTPUT

  FETCH NEXT FROM @C1 INTO @TABLE_SCHEMA , @TABLE_NAME , @HasCreated , @HasUpdated ;
END

SELECT @MaxDate AS [@MaxDate], @MinDate AS [@MinDate]


  1. Brug af JShell i Java 9 i NetBeans 9.0, del 3

  2. Hvordan registrerer jeg udførelsestiden for at køre sql-sætninger, der er gemt i filer?

  3. Hvorfor kan du ikke overføre MYSQL-funktioner til forberedte BOB-erklæringer?

  4. Hvordan vælger man flere rækker efter multi-kolonne primær nøgle i MySQL?