SQL поворачивает результаты от широкого к вертикальному - PullRequest
0 голосов
/ 18 марта 2019

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

Результаты представляют собой одну строку, показывающую значение для столбцов, перечисленных здесь:

AccountingCode ActiveCostAllocationCode1Segment1 ActiveCostAllocationCode1Segment1Description
-------------- --------------------------------- --------------------------------------------
    0              71                                264                                         

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

ColName                                          Value
--------------------------------------------- ---------
AccountingCode                                      0
ActiveCostAllocationCode1Segment1                  71
ActiveCostAllocationCode1Segment1Description      264

Я пытался использовать PIVOT / UNPIVOT, но не мог понять, как заставить это работать для этого случая.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Если вы работаете с SQL Sever, тогда вы можете использовать APPLY:

SELECT tt.ColName, tt.val
FROM table t CROSS APPLY
     ( VALUES ('AccountingCode', AccountingCode), 
              ('ActiveCostAllocationCode1Segment1', ActiveCostAllocationCode1Segment1),
              ('ActiveCostAllocationCode1Segment1Description', ActiveCostAllocationCode1Segment1Description)    
     ) tt(ColName, Val);

В стандартном варианте вы можете использовать UNION ALL до UNPIVOT данных.

0 голосов
/ 18 марта 2019

Общий способ в SQL: UNION ALL:

select 'AccountingCode', AccountingCode from t
union all
select 'ActiveCostAllocationCode1Segment1', ActiveCostAllocationCode1Segment1 from t
union all
select 'ActiveCostAllocationCode1Segment1Description', ActiveCostAllocationCode1Segment1Description

Это предполагает, что типы столбцов совместимы (все они выглядят как целые числа, так что, вероятно, это нормально).

Лучшим методом является использование бокового соединения (или apply в некоторых базах данных), если ваша база данных это поддерживает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...