Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tìm giá trị cột tối thiểu và tối đa của một cột chung trên tất cả các bảng trong cơ sở dữ liệu SQL Server 2008

Một cái gì đó như sau sẽ hoạt động

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thực hiện THAM GIA MẶT BẰNG TRÁI trong SQL Server

  2. Tương tự Mutex trong SQL?

  3. Chọn các tên cột duy nhất từ ​​danh sách các bảng đã kết hợp

  4. Thêm gợi ý truy vấn khi gọi Hàm Table-Valued

  5. có cách nào để lấy danh sách các chức năng sẵn có của máy chủ sql không?