2013-07-26 37 views
10

Tôi đang đặt cùng một báo cáo trong SSRS. Tập dữ liệu được điền bằng truy vấn SQL của máy chủ MS SQL. Nó đang truy vấn một số bảng tương tự bằng cách sử dụng Union All. Vấn đề là có một số mất thông tin. Các bảng khác nhau dành cho các tác phẩm khác nhau, nhưng không có cột nào trong các bảng đó có tên của trang; cách duy nhất để xác định trang web là tên bảng. Trong các cột kết hợp là kết quả của Liên minh Tất cả, không có cách nào để cho biết các hàng nào đến từ trang nào.Thêm cột vào kết quả truy vấn SQL

Có cách nào để thay đổi truy vấn của tôi để thêm một cột vào kết quả, mà sẽ có nơi làm việc mà mỗi hàng được liên kết? Tôi không thể thêm bảng này vào bảng gốc vì tôi có quyền chỉ đọc. Tôi đã nghĩ về một cái gì đó như thế này, nhưng tôi không biết loại biểu thức nào để sử dụng, hoặc nếu nó thậm chí có thể được thực hiện:

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

vv Biểu thức sẽ 'thêm' một cột, thêm tên trang web được liên kết với từng phần của truy vấn. Có thể điều này hoặc bất cứ điều gì khác làm việc để có được tên trang web?

Trả lời

11

thủ thêm nó khi bạn xây dựng các truy vấn:

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

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

UNION ALL 
... 

VÍ DỤ:

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 

KẾT QUẢ:

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

Tôi đã thử ngay bây giờ, nhưng nó không hoạt động. Nó thêm 'Site1' làm tên cột và SiteName làm bí danh. –

+0

Nó không nên. Trong truy vấn ở trên, SiteName phải là tên cột mới và các giá trị trong đó phải là 'Site1' hoặc 'Site2' tùy thuộc vào truy vấn mà nó đến từ đó. – Khan

+0

Hãy thử nó mà không có bí danh? Chọn 'Site1', t1.column, v.v ... –

3

tại sao không bạn thêm một "nguồn" cột cho mỗi truy vấn có giá trị tĩnh như

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

UNION ALL 

select 'source 2' as Source, column1, column2... 
from table2 
Các vấn đề liên quan