我在SSRS中汇总一份报告.数据集使用MS sql服务器的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