本文介绍了向SQL查询结果添加列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在用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
这篇关于向SQL查询结果添加列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!