Дополнительно
Эффективно конвертировать строки в столбцы на сервере sql
Я ищу эффективный способ преобразования строк в столбцы на сервере SQL, я слышал, что PIVOT не очень быстр, и мне нужно иметь дело с большим количеством записей.
Это мой пример:
-------------------------------
| Id | Value | ColumnName |
-------------------------------
| 1 | John | FirstName |
| 2 | 2.4 | Amount |
| 3 | ZH1E4A | PostalCode |
| 4 | Fork | LastName |
| 5 | 857685 | AccountNumber |
-------------------------------
Это мой результат:
---------------------------------------------------------------------
| FirstName |Amount| PostalCode | LastName | AccountNumber |
---------------------------------------------------------------------
| John | 2.4 | ZH1E4A | Fork | 857685 |
---------------------------------------------------------------------
Как я могу построить результат?
358
2
Есть несколько способов преобразовать данные из нескольких строк в столбцы.
Использование
PIVOT
В SQL Server вы можете использовать функцию
PIVOT
для преобразования данных из строк в столбцы:Смотрите Демо.
Pivot с неизвестным номером
columnames
Если у вас есть неизвестный номер
columnnames
, который вы хотите транспонировать, вы можете использовать динамический SQL:Смотрите Демо.
Использование агрегатной функции
Если вы не хотите использовать функцию
PIVOT
, вы можете использовать агрегатную функцию с выражениемCASE
:Смотрите Демо.
Использование нескольких объединений
Это также может быть завершено с использованием нескольких объединений, но вам понадобится несколько столбцов для связывания каждой из строк, которых у вас нет в ваших выборочных данных. Но основной синтаксис будет:
поскольку поворотные данные все еще горячие, я решил добавить что-то от меня. Это скорее метод, чем один сценарий, но он дает вам гораздо больше возможностей. Прежде всего, есть 3 скрипта, которые вам нужно развернуть:
ColumnActionList
] - > хранит данные в качестве параметраproc_PivotPrepare
] - > готовит наши данныеproc_PivotExecute
] - > выполнить скрипт