Выберите в PIVOT - PullRequest
       1

Выберите в PIVOT

0 голосов
/ 15 января 2019

У меня есть таблица в SQL как:

DefultDim   Name,         DisplayValue
-------------------------------------
5637145329, B_MainSector,   4
5637145329, C_SecondSector, 401
5637145329, D_ThirdSection, 40100
5637145329, E_Vendor,       0032

Я хочу использовать select, чтобы видеть как:

DefultDim,  B_MainSector,   C_SecondSector, D_ThirdSection, E_Vendor
--------------------------------------------------------------------
5637145329   4             401              40100           0032

Я использую этот код:

select DEFAULTDIMENSION AS FULLDIM ,[0] AS B_MainSector ,[1] AS C_SecondSector ,[2] AS D_ThirdSection ,[3] AS E_Vendor
from
(select DEFAULTDIMENSION,NAME,RECID,DISPLAYVALUE from DEFAULTDIMENSIONVIEW )
P PIVOT  (max(DISPLAYVALUE) 
for DISPLAYVALUE in([0],[1],[2],[3])) as PVT 

Но результаты выглядят так:

DefultDim   B_MainSector    C_SecondSector  D_ThirdSection  E_Vendor
--------------------------------------------------------------------
5637145329, NULL,   NULL,   NULL,   NULL
5637145329, NULL,   NULL,   NULL,   NULL
5637145329, NULL,   NULL,   NULL,   NULL
5637145329, NULL,   NULL,   NULL,   NULL

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

У меня нет проблем с переименованием значений

SELECT DefaultDim
    ,Name
    ,[4] AS B_itsMe
    ,[401] AS i_MadeIt
    ,[32] AS O_K
    ,[40100] AS Fix_This
FROM(
SELECT * FROM temp.dbo.DefaultDimensionView
PIVOT(
        MAX(DisplayValue)
        FOR DisplayValue
        IN ([4], [401], [32], [40100])
        ) AS Piv_DisplayValue
) AS R

Пример данных

enter image description here

0 голосов
/ 15 января 2019

Вы можете попробовать следующий запрос Pivot

create table #Temp (DefultDim Varchar(15), Name Varchar(15), DisplayValue Varchar(5))

Insert Into #Temp Values ('5637145329', 'B_MainSector', '4'),
('5637145329', 'C_SecondSector', '401'),
('5637145329', 'D_ThirdSection', '40100'),
('5637145329', 'E_Vendor',       '0032')

select DefultDim, B_MainSector, C_SecondSector, D_ThirdSection, E_Vendor
from
(
  select DefultDim, DisplayValue, Name
  from #Temp
) d
pivot
(
  max(DisplayValue)
  for Name in (B_MainSector,   C_SecondSector, D_ThirdSection, E_Vendor)
) piv;

Вы можете найти живую демонстрацию Демонстрацию здесь

...