У меня есть таблица, содержащая идентификатор и название страны, и мне нужно преобразовать их, чтобы идентификатор с более чем одной страной отображался в 1 строке. Я искал в этом форуме более часа и ничего не нашел.
Я пытался, если использование функции pivot может помочь мне достичь желаемого результата, но я чувствую, что использование pivot не работает в моем случае здесь.
Это мини-версия стола, который у меня есть. Число различных значений в поле «страна» будет больше 100, поэтому я могу просто сказать что-то вроде когда county = '..', так как это будет повторяться.
enter code here
+----+--------+
| id | country|
+----+--------+
| 1 | US |
| 1 | UK |
| 2 | JP |
+----+--------+
Желаемый результат Я ищу:
enter code here
+----+-----------+-----------+
| id | country_1 | country_2 |
+----+-----------+-----------+
| 1 | US | UK |
| 2 | JP | null |
+----+-----------+-----------+
Я нашел этот вопрос похожим, но он противоположен тому, чего я пытаюсь достичь.
Оператор MySQL для сводной таблицы без использования сводной функции или объединения
+++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++
Обновление:
Большое спасибо за вашу помощь. Возможно, я не использовал ваши запросы, чтобы решить мою проблему - из-за того, что синтаксис немного отличается в снежинке. Тем не менее, я получил понимание от всех вас.
вот мое решение:
enter code here
select t1.id,
max(iff(t1.row_number = 1, t1.country ,null)) as country_1,
max(iff(t1.row_number = 2, t1.country ,null)) as country_2,
max(iff(t1.row_number = 3, t1.country, null)) as country_3
from
(
select id, country, row_number() over (partition by id order by id ) as
row_number
from table
) t1
group by t1.id