Поворот обоих числовых c и нанизанных не числовых c столбцов - PullRequest
0 голосов
/ 30 марта 2020

У меня есть специфическое c требование для поворота двух столбцов, одного числа c и одной строки. Я хорошо разбираюсь в SQL pivot, однако не смог найти решение для этого.

Мои необработанные данные похожи на:

Country | Segment | Year | Parameter_Name | Parameter_Value_Numeric | Parameter_Value_String    
USA      | 1      | 2003 | Datapoint1     | 100                     | null
USA      | 1      | 2003 | Datapoint2     | 148                     | null
USA      | 1      | 2003 | Datapoint3     | null                    | Upper values(s)
USA      | 2      | 2003 | Datapoint1     | 121                     | null
USA      | 2      | 2003 | Datapoint2     | 180                     | null
USA      | 2      | 2003 | Datapoint3     | null                    | Medium values(s)

Результаты, которые я хочу получить, примерно такие:

Country  | Segment       | Year | Datapoint1     | Datapoint2     | Datapoint3
USA      | 1             | 2003 | 100            | 148            | Upper values(s)
USA      | 2             | 2003 | 121            | 180            | Medium values(s)

Проблема в том, что Datapoint1 и Datapoint2 равны float, а Datapoint3 равен nvarchar. Следовательно, Pivot может использовать только один из них.

1 Ответ

1 голос
/ 30 марта 2020

Вы можете попробовать это ниже logi c -

ДЕМО ЗДЕСЬ

SELECT Country,Segment,Year,
MAX(CASE WHEN Parameter_Name = 'Datapoint1' THEN Parameter_Value_Numeric END) Datapoint1,
MAX(CASE WHEN Parameter_Name = 'Datapoint2' THEN Parameter_Value_Numeric END) Datapoint2,
MAX(CASE WHEN Parameter_Name = 'Datapoint3' THEN Parameter_Value_String END) Datapoint3
FROM your_table
GROUP BY Country,Segment,Year
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...