У меня есть таблица, подобный следующему:Pivot Несколько Ряды
id key str_val date_val num_val
1 A a
1 B b
1 C 2012-01-01
1 D 1
2 A c
2 E d
2 C 2012-01-02
2 D 2
мне нужно, чтобы это выглядело как:
id A B C D E
1 a b 2012-01-01 1
2 c 2012-01-02 2 d
В принципе, каждый ключ должен стать его собственный столбец
Я попытался и не смог использовать команду PIVOT с пользой, и в настоящее время я пытаюсь выполнить это с помощью case-case. то есть
select
id,
case key
when 'A'
then str_val
end as A,
case key
when 'C'
then date_val
end as C
--etc.
from test_table
Однако я не могу понять, как объединить строки таблицы после этого. Я застрял в:
id A B C D E
1 a
1 b
1 2012-01-01
1 1
Любые мысли или ввод, которые могут мне помочь? Заранее спасибо.
Знаете ли вы, будет ли все в столбце результата «A» (строки с ключом «A» в исходной таблице) одинаковым типом данных? Например, в вашем примере все Cs являются Date или DateTime, гарантируется ли это? И есть только одна строка на каждую пару id/Key? Я думаю, что в основном вы хотите UNPIVOT (используя ключевое слово или UNION) str_val, dateval, numval для каждой строки, а затем сворачивать результаты, используя старинный синтаксис Max CASE (...) как A ". –
@LevinMagruder Ваши предположения верны. Я должен буду попробовать. –
На самом деле ответ Криса Келли и Гавина Кэттеля, вероятно, лучше. Хотя это не причина, чтобы не попробовать их всех. –