Search code examples
sqlsql-server-2012unpivot

Display two column values as two row in SQL


I am using SQL Server 2012 for my database. Now, I have one table with following details.

ID                COLUMN1              COLUMN2
1                    A                    B

Now i want result like this.

ID                   Values
1                       A   
1                       B

Can any one suggest me how to do? I know i can do using pivot or unpivot. but i dont know how to do? and is there other way to do this?

Please help me out to write query for the same.

Thanks in advance.


Solution

  • You can use UNPIVOT to get the final result:

    select id, value
    from yourtable
    unpivot
    (
      value
      for col in (COLUMN1, COLUMN2)
    ) u;
    

    See SQL Fiddle with Demo

    Or you can use CROSS APPLY to get it:

    select id, value
    from yourtable
    cross apply
    (
      values ('COLUMN1', COLUMN1), ('COLUMN2', COLUMN2)
    ) c (col, value)
    

    See SQL Fiddle with Demo