sql >> Databasteknik >  >> RDS >> Sqlserver

Jag måste skapa en vy som sammanför alla tabeller baserat på deras prefix (nya tabeller läggs till varje månad)

Du kan använda den här frågebatchen för att skapa vyn. Men du måste fortsätta uppdatera den.

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);

Detta är en lagrad proc som tar bastabellnamnet och skapar en vy för den (jag slog in ovanstående kod i en proc som tar en parameter)

    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. sp_send_dbmail exekveras från jobbet misslyckas med frågeresultat bifogat som fil

  2. Hur man migrerar databaser och datafiler

  3. Skapa en databas i SQL Server 2017

  4. Rails Postgresql flera scheman och samma tabellnamn