Sql server 2008 SQL Server合并结果集
我试图将两个不同查询的结果集合并到一个结果集中。在不使用存储过程(可能使用WITH关键字)的情况下,这是可能的吗 以以下情况为例:Sql server 2008 SQL Server合并结果集,sql-server-2008,multiple-resultsets,Sql Server 2008,Multiple Resultsets,我试图将两个不同查询的结果集合并到一个结果集中。在不使用存储过程(可能使用WITH关键字)的情况下,这是可能的吗 以以下情况为例: SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows 请忽略在这里建议OR的明显解决方案,因为我省略了复杂的动态约束,也许只是为了说明我
SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows
SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows
请忽略在这里建议OR的明显解决方案,因为我省略了复杂的动态约束,也许只是为了说明我的观点
我想将每个查询的结果单独地,并将它们组合成一个结果集。您可以在两个查询之间使用
联合所有
:
SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows
Union All -- Retrieves all results from both recordsets including both duplicates
SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows
SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows
Union -- Retrieves all results from both recordsets discarding duplicates
SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows
SELECT *, '2013' Source
FROM student
WHERE graduation_year = 2013
UNION ALL
SELECT *, '2014' Source
FROM student
WHERE graduation_year = 2014
看
如果需要标识行来自哪个数据集,我添加了一个名为source的字段,如果不需要,可以将其排除在外
如果您想在临时表中使用此选项,可以使用以下选项:
select *
into #temp
from
(
SELECT *, '2013' Source
FROM student
WHERE graduation_year = 2013
UNION ALL
SELECT *, '2014' Source
FROM student
WHERE graduation_year = 2014
) src
select * from #temp
请参见您可以使用
UNION ALL
SELECT *
FROM student
WHERE graduation_year = 2013
UNION ALL
SELECT *
FROM student
WHERE graduation_year = 2014
有没有办法把这个结果命名为临时表,这样我就可以对它进行查询?@AdamLevitt-fyi:使用a可以让你命名结果并简单地使用它,而无需创建临时表。是的,我确实想这样做,但我想做两次,然后使用第三次合并前两次的结果。