2013-07-26 18 views
10

Sto assemblando un rapporto in SSRS. Il set di dati viene popolato con una query SQL di un server MS SQL. Sta interrogando diverse tabelle simili usando Union All. Il problema è che c'è qualche perdita di informazioni. Le diverse tabelle sono per diversi siti, ma nessuna delle colonne in quelle tabelle ha il nome del sito; l'unico modo per identificare un sito è il nome della tabella. Nelle colonne combinate che sono il risultato di Union All, non c'è modo di dire quali file provengono da quale sito.Aggiungi colonna ai risultati della query SQL

C'è un modo per modificare la mia query per aggiungere una colonna ai risultati, che avrebbe il sito di lavoro con il quale ogni riga è associata? Non riesco ad aggiungerlo alla tabella originale, perché ho le autorizzazioni di sola lettura. Avevo pensato a qualcosa di simile, ma non so che tipo di espressione da utilizzare, o se può anche essere fatto:

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

ecc L'espressione sarebbe 'aggiungere' una colonna, che avrebbe aggiungi il nome del sito associato a ciascuna parte della query. Questo o altro potrebbe funzionare per ottenere il nome del sito?

risposta

11

aggiungerlo manualmente quando si genera la query:

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

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

UNION ALL 
... 

ESEMPIO:

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 

RISULTATO:

SiteName column1 column2 
Site1  1  a 
Site1  2  b 
Site2  3  c 
Site2  4  d 
+0

Ho provato proprio ora, ma non ha funzionato. Aggiunge "Sito1" come nome della colonna e NomeSito come alias. –

+0

Non dovrebbe. Nella query sopra, SiteName dovrebbe essere il nuovo nome di colonna e i valori in esso dovrebbero essere 'Sito1' o 'Sito2' a seconda della query da cui proviene. – Khan

+0

Provalo senza lo pseudonimo? Seleziona "Sito1", t1.colonna, ecc ... –

3

Perché non si aggiunge una colonna "fonte" a ciascuna delle query con un valore statico come

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

UNION ALL 

select 'source 2' as Source, column1, column2... 
from table2 
Problemi correlati