Convert rows to columns in SQL Server Management Studio

340 Views Asked by At

I'm posting the query below which I used to retrieve the data and output how it shows and how do I need also .. please let me know how can I convert rows to columns data

2

There are 2 best solutions below

3
On BEST ANSWER

Just use conditional aggregation since the columns are constant.

select
    BarCdmID
    , AME = MAX(case when Facility_MisFacID = 'AME' then MyCount end) 
    , AMV = MAX(case when Facility_MisFacID = 'AMV' then MyCount end) 
    , BHV = MAX(case when Facility_MisFacID = 'BHV' then MyCount end) 
    , BRV = MAX(case when Facility_MisFacID = 'BRV' then MyCount end) 
    , EOR = MAX(case when Facility_MisFacID = 'EOR' then MyCount end) 
    , IPA = MAX(case when Facility_MisFacID = 'IPA' then MyCount end) 
    , IPB = MAX(case when Facility_MisFacID = 'IPB' then MyCount end) 
    , LTC = MAX(case when Facility_MisFacID = 'LTC' then MyCount end) 
    , OHW = MAX(case when Facility_MisFacID = 'OHW' then MyCount end) 
from
(
    Select BarCdmID = LEFT(BarCdmID, 2)
        , Facility_MisFacID
        , MyCount = count(*)
    from BarCdm_Facil
    group by LEFT(BarCdmID, 2)
        , Facility_MisFacID

) x
group by X.BarCdmID
order by BarCdmID
0
On

you should use pivot when you want to convert rows to column base on one column

    ( select left(BarCdmID,2) as BarCdmID ,
[0] as AME,
[1] as AMV, 
[2] as BHV ,
[3] as BRV,
[4] as EOR ,
[5] as IPA,
[6] as IPB,
[7] as LTC,
[8] as OHW from BARCDM_FACIL) T
    pivot 
(facility_misfacID
 FOR T.BarCdmID 
IN [0],[1],[2],[3],[4],[5],[6],[7],[8]
    ) as pvt