Search code examples
sqlmultiple-columnstransposeunpivot

SQL Transpose Multiple Columns to Rows


Original Data

Required Result

I have the Data in Fig1 and need to transpose the Columns to Rows as in Fig2 ( Required Result).

This will be for multiple years and periods


Solution

  • select Division, Period, 'Total Cost' as Description, TotalCost as Value
    from MyTable
    union
    select Division, Period, 'Discount' as Description, Discount as Value
    from MyTable
    union
    select Division, Period, 'Net Sales' as Description, NetSales as Value
    from MyTable
    union
    select Division, Period, 'Net Returns' as Description, NetReturns as Value
    from MyTable
    union
    select Division, Period, 'Gross Sales' as Description, GrossSales as Value
    from MyTable
    union
    select Division, Period, 'Gross Returns' as Description, GrossReturns as Value
    from MyTable
    

    You can also wrap this in a view, then do a select on the view with whatever ordering or filtering that you need