wake-up-neo.com

Spalte zu SQL-Abfrageergebnissen hinzufügen

Ich erstelle einen Bericht in SSRS. Der Datensatz wird mit einer SQL-Abfrage eines MS SQL-Servers gefüllt. Es werden mehrere ähnliche Tabellen mit Union All abgefragt. Das Problem ist, dass einige Informationen verloren gehen. Die verschiedenen Tabellen sind für verschiedene Arbeitsstandorte bestimmt, aber keine der Spalten in diesen Tabellen hat den Namen der Site. Die einzige Möglichkeit, eine Site zu identifizieren, ist der Tabellenname. In den kombinierten Spalten, die das Ergebnis von Union All sind, kann nicht festgestellt werden, welche Zeilen von welcher Site stammen.

Gibt es eine Möglichkeit, meine Abfrage zu ändern, um den Ergebnissen eine Spalte hinzuzufügen, auf der sich die Baustelle befindet, der jede Zeile zugeordnet ist? Ich kann dies nicht zur Originaltabelle hinzufügen, da ich nur Leseberechtigungen habe. Ich hatte mir so etwas überlegt, aber ich weiß nicht, welche Art von Ausdruck ich verwenden soll oder ob es überhaupt möglich ist:

SELECT t1.column, t1.column2
FROM t1
<some expression>
UNION ALL
SELECT t2.column, t2.column2
FROM t2
<some expression>
UNION ALL
...

usw. Der Ausdruck würde eine Spalte 'hinzufügen', die den Site-Namen hinzufügt, der jedem Teil der Abfrage zugeordnet ist. Könnte dies oder etwas anderes funktionieren, um den Site-Namen zu erhalten?

14
Ben C.

Fügen Sie es manuell hinzu, wenn Sie die Abfrage erstellen:

SELECT 'Site1' AS SiteName, t1.column, t1.column2
FROM t1

UNION ALL
SELECT 'Site2' AS SiteName, t2.column, t2.column2
FROM t2

UNION ALL
...

BEISPIEL:

DECLARE @t1 TABLE (column1 int, column2 nvarchar(1))
DECLARE @t2 TABLE (column1 int, column2 nvarchar(1))

INSERT INTO @t1
SELECT 1, 'a'
UNION SELECT 2, 'b'

INSERT INTO @t2
SELECT 3, 'c'
UNION SELECT 4, 'd'


SELECT 'Site1' AS SiteName, t1.column1, t1.column2
FROM @t1 t1

UNION ALL
SELECT 'Site2' AS SiteName, t2.column1, t2.column2
FROM @t2 t2

ERGEBNIS:

SiteName  column1  column2
Site1       1      a
Site1       2      b
Site2       3      c
Site2       4      d
18
Khan

warum fügen Sie nicht jeder Abfrage eine "Quell" -Spalte mit einem statischen Wert wie "" hinzu?

select 'source 1' as Source, column1, column2...
from table1

UNION ALL

select 'source 2' as Source, column1, column2...
from table2
5
Diego