在 SQL Server Management Studio 中将行转换为列
Convert rows to columns in SQL Server Management Studio
我在下面发布了我用来检索数据并输出它的显示方式以及我还需要如何..请告诉我如何将行数据转换为列数据的查询
只需使用条件聚合,因为列是常量。
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
当你想将行转换为基于一列的列时,你应该使用 pivot
( 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
我在下面发布了我用来检索数据并输出它的显示方式以及我还需要如何..请告诉我如何将行数据转换为列数据的查询
只需使用条件聚合,因为列是常量。
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
当你想将行转换为基于一列的列时,你应该使用 pivot
( 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