sql >> Databáze >  >> RDS >> Sqlserver

Potřebuji vytvořit pohled, který spojí všechny tabulky na základě jejich předpony (nové tabulky přidané měsíčně)

Tuto dávku dotazů můžete použít k vytvoření pohledu. Musíte jej však neustále aktualizovat.

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

Toto je uložený proces, který přebírá název základní tabulky a vytváří pro něj pohled (výše uvedený kód jsem zabalil do procesu, který přebírá parametr)

    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. Jak vytvořit Serverless GraphQL API pro MySQL, Postgres a Aurora

  2. SQL IN operátor pro začátečníky

  3. Nedostatek paměti při provádění velkého dotazu?

  4. přidejte názvy pro nahrané obrázky v nodejs,mysql a reagujte