Преобразование строк в столбцы в SQL Server Management Studio - PullRequest
0 голосов
/ 03 октября 2018

Я публикую запрос ниже, который я использовал, чтобы получить данные и вывести их, как они отображаются и как мне это тоже нужно ... пожалуйста, дайте мне знать, как я могу преобразовать строки в данные столбцов

My Data

      [1]: https://i.stack.imgur.com/DiWTP.png

И вывод мне нужно, чтобы он был, как показано ниже.

       AME  AMV BHV BRV EOR IPA IPB LTC OHW
00      3    3   3    1   1  3   3   1   1
01     38   38  38  217 229              

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы должны использовать сводку, если хотите преобразовать строки в столбцы на основе одного столбца

    ( 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
0 голосов
/ 03 октября 2018

Просто используйте условное агрегирование, поскольку столбцы постоянны.

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
...