2013-07-26 20 views
10

Łączę raport w SSRS. Zestaw danych jest wypełniany zapytaniem SQL serwera MS SQL. Jest to kwerenda na kilka podobnych tabel przy użyciu Union All. Problem polega na tym, że istnieje pewna utrata informacji. Różne tabele dotyczą różnych miejsc pracy, ale żadna z kolumn w tych tabelach nie zawiera nazwy strony; jedynym sposobem identyfikacji witryny jest nazwa tabeli. W połączonych kolumnach, które są wynikiem Unii Wszystkie, nie ma możliwości określenia, które wiersze pochodzą z której strony.Dodaj kolumny do wyników zapytania SQL

Czy istnieje sposób, aby zmienić moje zapytanie, aby dodać kolumnę do wyników, które miałyby miejsce pracy, z którym każdy wiersz jest powiązany? Nie mogę dodać tego do oryginalnej tabeli, ponieważ mam uprawnienia tylko do odczytu. Myślałem o czymś takim, ale nie wiem jaki rodzaj ekspresji w użyciu, czy nawet może być wykonane:

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

itd. Wyrażenie to „dodatek” kolumnę, która dodaj nazwę witryny powiązaną z każdą częścią zapytania. Czy to czy coś innego może wpłynąć na nazwę strony?

Odpowiedz

11

ręcznie dodać go podczas budowania zapytania:

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

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

UNION ALL 
... 

PRZYKŁAD:

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 

WYNIK:

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

Próbowałem już teraz, ale nie działało. Dodaje "Site1" jako nazwę kolumny i SiteName jako alias. –

+0

Nie powinien. W powyższym zapytaniu Nazwa witryny powinna być nową nazwą kolumny, a wartości w niej powinny być "Site1" lub "Site2" w zależności od tego, z której kwerendy pochodzi. – Khan

+0

Wypróbuj bez aliasu? Wybierz "Site1", t1.column, etc ... –

3

dlaczego nie można dodać kolumnę "Źródło" do każdego zapytania o wartości statycznej, takiej jak

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

UNION ALL 

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