2016-06-13 15 views
2

ich brauche etwas Hilfe zu schaffen ... Ich habe ein Schema in SQL Server 2012, dass in diesem Moment 32 Tabellen enthält, die alle die gleiche Struktur habenWie eine benutzerdefinierte Ansicht in SQL Server 2012

(KEY, DATE, USER, STATE, NOTES) 

Was ich Notwendigkeit besteht, ein view mit folgenden Struktur

KEY, NAME, STATE 

Hinweis zu schaffen, dass die KEY und STATE Spalten die gleichen für alle Tabellen sind, und die Feldnamen entsprechen die Tabellennamen ...

Ich war so etwas wie

SELECT KEY, TABLE.NAME, STATE 
FROM MYTABLELIST 
WHERE STATE = 'SOME CONDITION' 

denke ich die Tabellen Namen bekommen, die ich mit diesem benötigen

SELECT t.name 
FROM sys.tables t 
INNER JOIN sys.schemas s ON t.[schema_id] = s.[schema_id] 
WHERE s.name = N'RULES' 
    AND t.name LIKE 'G_%'; 

aber ich weiß nicht, wie diese Liste zu durchlaufen eine Ansicht zu erstellen.

+2

Sie können keine dynamischen Code in einer Ansicht ausgeführt werden. Wie wäre es mit einer Prozedur? –

Antwort

2

Nur gespeicherte Prozedur dies tun würde:

CREATE PROCEDURE test_List AS 
BEGIN 
    DECLARE @SCRIPT VARCHAR(8000) = (
    SELECT 'SELECT [KEY], ''' + t.name + ''' as [NAME], [STATE] FROM [' 
      + t.name + '] UNION ALL ' 
    FROM sys.tables t 
    INNER JOIN sys.schemas s 
      ON t.[schema_id] = s.[schema_id] 
    WHERE s.name = N'RULES' AND t.name LIKE 'G_%' 
    FOR XML PATH ('')); 

    SET @SCRIPT = LEFT(@SCRIPT,LEN(@SCRIPT)-10); 

    EXEC(@SCRIPT) 
    RETURN 
END; 
GO 
1

2 Möglichkeiten, dies auf die harte Art zu tun, die eine Weile dauert, um zu schreiben und zu debuggen, aber nur einmal ausgeführt wird.

Und die manuelle Option:

Cut eine Paste dieser Code einmal für jede Tabelle und bearbeiten von Hand sehr schnell.

Hinweis überspringen Sie die create view as tablelistview, bis die Auswahl funktioniert.

SELECT KEY, 'table1' as tablename, STATE FROM TABLE1 
Union all 
SELECT KEY, 'table2', STATE FROM TABLE2 
Union all 
SELECT KEY, 'table3' , STATE FROM TABLE3 
Union all 

Etc Letzte Zeile nicht eine Union haben alle

+0

@Juan Santiago Arango Giraldo, Wie sind Sie mit Ihrer benutzerdefinierten Ansicht zurecht gekommen? – Mike