Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Server combine result sets

I'm trying to combine the result sets of two different queries into a single result set. Is this possible without using a stored procedure, perhaps using the WITH keyword?

Take the following case:

SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows
SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows

Please ignore the obvious solution of suggesting an OR here as I'm leaving out the complex dynamic constraints just to perhaps illustrate my point.

I'd like to take the results from each of these queries individually and combine them into a single result set.

like image 260
Adam Levitt Avatar asked Apr 13 '26 18:04

Adam Levitt


1 Answers

You can use a UNION ALL between the two queries:

SELECT *, '2013' Source
FROM student 
WHERE graduation_year = 2013 
UNION ALL
SELECT *, '2014' Source
FROM student 
WHERE graduation_year = 2014 

See SQL Fiddle with Demo

I added a field called source if you need to identify what dataset the row came from, this can be excluded if not needed.

If you want this in a temp table you can use some like this:

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

See SQL Fiddle with Demo

like image 56
Taryn Avatar answered Apr 17 '26 21:04

Taryn



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!