sql server union with example

Posted on : 27-04-2012 | By : Devi Prasad | In : SQL Server Basics, T-SQL Code Examples

Share:

0


UNION : UNION Statement in SQL Server combines all rows in the results of two queries.

EXAMPLE’s Given below:

SELECT 1
UNION 
SELECT 2

Result:

———–
1
2

(2 row(s) affected)

Result is the combining the results of two select queries.

SELECT 'Apple'
UNION 
SELECT 'Mango'
UNION 
SELECT 'Grape'

Result:

—–
Apple
Grape
Mango

(3 row(s) affected)

Result is the combining the results of three select queries.

SELECT 'Apple'
UNION 
SELECT 'Apple'
UNION 
SELECT 'Grape'

result:
—–
Apple
Grape

(2 row(s) affected)

Result is the combining the results of three select queries, it can be observed that the duplicate rows in the select queries are ignored.

SET NOCOUNT ON
DECLARE @table1 TABLE (
    id INT)
 
DECLARE @table2 TABLE (
    id INT)
 
DECLARE @i AS INT
 
SET @i = 1
 
WHILE @i <= 10
    BEGIN
        INSERT INTO @table1
        SELECT @i
        SET @i = @i + 1
    END
 
SET @i = 5
 
WHILE @i <= 15
    BEGIN
        INSERT INTO @table2
        SELECT @i
        SET @i = @i + 1
    END
 
SELECT *
FROM   @table1
 
SELECT *
FROM   @table2
 
SELECT *
FROM   @table1
UNION
SELECT *
FROM   @table2

Result:

id
———–
1
2
3
4
5
6
7
8
9
10

id
———–
5
6
7
8
9
10
11
12
13
14
15

id
———–
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

@table1 contains numbers 1 to 10, @table2 contains numbers 5 to 15
union of @table1 and @table2 contains numbers 1 to 15 (with out dublicate values)

So union statement works as follows:
If two queries are unioned and if the query 1 results in x rows and query 2 in y rows of which z rows are dupicate with respect to query1,
then union gives x+y-z rows.

Note:
Make sure that the select statements fetch the same number of columns, if not you would get the error

Msg 205, Level 16, State 1, Line 1
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists

Sample Code:

SELECT 'Apple'
UNION 
SELECT 'Apple','Grape'

Make sure that the column datatypes are same in each select statements, if not you would get the error

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value ‘two’ to data type int.

Sample Code:

SELECT 'Apple',1
UNION 
SELECT 'Grape','two'

The column names in the first select statement are used in the output of union statement. Use alias names if you wanted to change the column names.
If you are specifng values directly in select queries then use alias names for columns.
Sample queries:

SELECT * INTO #a FROM (
SELECT 'Apple' ,1 
UNION 
SELECT 'Grape','2') a

Output:

Msg 8155, Level 16, State 2, Line 4
No column name was specified for column 1 of ‘a’.
Msg 8155, Level 16, State 2, Line 4
No column name was specified for column 2 of ‘a’.
Msg 1038, Level 15, State 5, Line 1
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as “” or [] are not allowed. Change the alias to a valid name.
Msg 1038, Level 15, State 5, Line 1
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as “” or [] are not allowed. Change the alias to a valid name.

Fixed code:

SELECT * INTO #a FROM (
SELECT 'Apple' a1 ,1 a2 
UNION 
SELECT 'Grape','2') a

Applicable to SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 r2, SQL Server 2012

(Visited 67 times, 1 visits today)



References : Devi Prasad (sqlserverlearner.com)

Need Help On SQL Server?

Cannot Find Solution to your problem (or) If you are looking for some help on SQL Server. Dont worry Click Here to Post your question and solve your issue.


Do you like my blog?

If you liked reading this blog, please help spread the word by sharing this blog with your friends.




Write a comment



Tags: , , , , , ,