Есть ли способы добиться динамического поворота таблиц в SQL Server с помощью элегантной функции?Поворотные таблицы - это базовая утилита, которая теоретически может быть выполнена в одной строке кода.Все, что нам нужно, это определить параметры: переменная столбца для сводки (изменить ее значения на имена столбцов), переменная для агрегирования, функция агрегирования и таблица, для которой мы выполняем поворот.
Я ищу альтернативы синтаксисуMicrosoft предлагает поворотные таблицы в SQL Server в 2019 году.
Практическая альтернатива, которую я нашел здесь: https://stackoverflow.com/a/45065584/1903793
Весь сложный код обернут хранимой процедурой.В этом элегантном однострочнике мы определяем все параметры, необходимые для поворота.
exec [dbo].[USP_DYNAMIC_PIVOT] 'date','category','amount','dbo.temp','sum'
Но предостережение этого решения состоит в том, что это хранимая процедура, поэтому она требует статической таблицы в качестве входных данных и выводит также статическую таблицу.Было бы лучше, если бы это был какой-то TVF, из которого мы можем выбирать.
Обновление после комментариев. Пока я не начал использовать SQL Server, я даже не знал, что поворот может быть статическим.Нужно сделать динамическое вращение.Многие другие приложения выполняют поворот таблиц на лету (Excel, Power BI, R) без ограничения того, что имена столбцов должны быть известны в первую очередь.В 2005 году может возникнуть проблема с осознанием того, что поворот может выполняться как функция с параметрами.Но, эй, мы идем в будущее, и смешно, что мы движемся в следующие десятилетия со сложным ограниченным синтаксисом для этой основной утилиты преобразования таблиц.