向SQL查询结果添加列

向SQL查询结果添加列,sql,sql-server,ssrs-2008,Sql,Sql Server,Ssrs 2008,我正在整理一份SSRS报告。数据集由MS SQL server的SQL查询填充。它使用Union All查询几个类似的表。问题是有些信息丢失了。不同的表格适用于不同的工作站点,但这些表格中的任何列都没有站点名称;标识站点的唯一方法是通过表名。在由Union All生成的组合列中,无法区分哪些行来自哪个站点 有没有办法改变我的查询,向结果中添加一列,该列将包含与每一行关联的工作站点?我无法将其添加到原始表,因为我具有只读权限。我曾想过这样的事情,但我不知道该用什么样的表达,或者是否可以做到: SE

我正在整理一份SSRS报告。数据集由MS SQL server的SQL查询填充。它使用Union All查询几个类似的表。问题是有些信息丢失了。不同的表格适用于不同的工作站点,但这些表格中的任何列都没有站点名称;标识站点的唯一方法是通过表名。在由Union All生成的组合列中,无法区分哪些行来自哪个站点

有没有办法改变我的查询,向结果中添加一列,该列将包含与每一行关联的工作站点?我无法将其添加到原始表,因为我具有只读权限。我曾想过这样的事情,但我不知道该用什么样的表达,或者是否可以做到:

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

表达式将“添加”一列,该列将添加与查询的每个部分关联的站点名称。此项或其他内容是否可以获取站点名称?

在生成查询时手动添加它:

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

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

UNION ALL
...
例如:

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
结果:

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

为什么不在每个查询中添加一个源列,其中包含一个静态值,如

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

UNION ALL

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

我刚才试过了,但不太管用。它将“Site1”添加为列名,将SiteName添加为别名。它不应该这样做。在上面的查询中,SiteName应该是新的列名,其中的值应该是'Site1'或'Site2',这取决于它来自哪个查询。@JefferyKhan我收回这一点。它在查询设计器中看起来并不正确,但是,当我预览报告时,它工作得非常好。谢谢