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

Tôi cần tạo một dạng xem hợp nhất tất cả các bảng dựa trên tiền tố của chúng (các bảng mới được thêm vào hàng tháng)

Bạn có thể sử dụng lô truy vấn này để tạo chế độ xem. Nhưng bạn cần phải tiếp tục cập nhật nó.

declare @v nvarchar(max) =
    (
        select stuff((
        select cast(' union all select * from ' as nvarchar(max)) + quotename(name)
          from sys.tables
         where name like 'SOME\_TABLE\____\_[0-9][0-9][0-9][0-9][a-Z][a-Z][a-Z]' escape '\'
           for xml path('a'), type
        ).value('.','nvarchar(max)'),1,11,'')
    );
set @v = 'CREATE VIEW SOME_TABLE AS ' + @v;
exec (@v);

Đây là một proc được lưu trữ lấy tên bảng cơ sở và tạo một khung nhìn cho nó (tôi đã gói đoạn mã trên vào một proc có tham số)

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE spCreateUnionedView
        @BaseTableName varchar(100)
    AS
    BEGIN
        SET NOCOUNT ON;

        declare @v nvarchar(max) =
        (
            select stuff((
            select cast(' union all select * from ' as nvarchar(max)) + quotename(name)
              from sys.tables
             where name like replace(@BaseTableName, '_', '\_') + '\____\_[0-9][0-9][0-9][0-9][a-Z][a-Z][a-Z]' escape '\'
               for xml path('a'), type
            ).value('.','nvarchar(max)'),1,11,'')
        );

        declare @s nvarchar(max) = 'DROP VIEW ' + @BaseTableName;
        exec (@s);

        set @v = 'CREATE VIEW ' + @BaseTableName + ' AS ' + @v;
        exec (@v);

    END
    GO



  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âu lệnh MERGE của SQL Server 2008 - cách tắt kích hoạt INSTEAD OF INSERT để cho phép MERGE

  2. SQL INSERT INTO từ nhiều bảng

  3. Tạo cơ sở dữ liệu trong SQL Server 2017

  4. Thuộc tính NUnit Rollback dường như không thành công trên SQL Server 2005

  5. SYSDATETIMEOFFSET () Ví dụ trong SQL Server (T-SQL)