SQL сложный динамический Pivoting 2

Привет я пытаюсь в SQL Server поворот для следующей таблицы

REFID | COL1 | COL2 | Sequence 1 abc cde 1 1 lmn rst 2 1 kna asg 3 2 als zkd 2 2 zpk lad 1 

Я хочу, чтобы

  REFID | 1COL1 | 2COL1 | 3COL1 |1COL2|2COL2|3COL2 1 abc lmn kna cde rst asg 2 zpk als null lad zkd null 

Количество столбцов в исходной таблице известно, но количество строк неизвестно. Может ли кто-нибудь помочь

Если вы хотите включить sequence номер в число имен столбцов, вам все равно придется сначала col1 столбцы col1 и col2 , а затем применить col2 поворота. Разница заключается в том, что вы соедините номер sequence с именами столбцов, создаваемыми во время процесса univot.

Для известного количества значений запрос будет выглядеть так:

 select REFID, [1col1], [2col1], [3col1], [1col2], [2col2], [3col2] from ( select REFID, col = cast(Sequence as varchar(10))+ col, value from yourtable cross apply ( select 'COL1', col1 union all select 'COL2', col2 ) c (col, value) ) d pivot ( max(value) for col in ([1col1], [2col1], [3col1], [1col2], [2col2], [3col2]) ) piv order by refid; 

Тогда, если у вас есть неизвестный номер, динамическая версия SQL будет:

 DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT ',' + QUOTENAME(cast(Sequence as varchar(10))+ col) from yourtable cross apply ( select 'Col1', 1 union all select 'Col2', 2 ) c(col, so) group by Sequence, col, so order by so, sequence FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT refid, ' + @cols + ' from ( select REFID, col = cast(Sequence as varchar(10))+ col, value from yourtable cross apply ( select ''COL1'', col1 union all select ''COL2'', col2 ) c (col, value) ) x pivot ( max(value) for col in (' + @cols + ') ) p order by refid' execute sp_executesql @query; 
  • SQL Server 2008, сводная диаграмма без агрегирования
  • Где я могу найти руководство или примеры того, как написать сводный SQL-запрос?
  • Запрос Транзакция некоторых строк в имена столбцов
  • Повернуть фиксированную таблицу с несколькими столбцами в sql-сервере
  • Как преобразовать столбцы таблицы в вертикальные данные в таблицах серверов Sql?
  • Удалить NULLS из динамического запроса
  • Как преобразовать столбец в строку в sql-запросе usnig pivot
  • Извлечение значения из группы, основываясь на условии на другом столбце
  • SQLServer - несколько PIVOT на одинаковых столбцах
  • Объединить MS SQL из 3 записей в один
  • Команда SQL Pivot
  • Interesting Posts

    Сопоставьте одну таблицу с другой базой данных с Entity Framework

    Преобразовать строку поиска в полнотекстовую совместимую строку поиска?

    XQuery : ошибка синтаксиса около '<eof>', ожидаемое выражение шага

    Оптимизация моих SQL-запросов – выбор правильных индексов

    Невозможно открыть базу данных при размещении веб-сайта в IIS

    Поддержка нескольких баз данных с инфраструктурой сущностей

    Невозможно определить ошибку рядом с ключевым словом LIKE

    Поиск медианы в SQL Server в первых 10 строках

    получить кросс-табличный отчет в соответствии с имеющимися данными – pivot

    sql конвертировать из «записи в месяц» в «запись с / до»

    TSQL – просмотр и сохраненная процедура: соображения производительности при применении предикатов

    пытаясь получить отдельные данные столбца с помощью оператора case case

    SQL получает последнюю дату записи

    миграция в mysql дает «неверный формат определения таблиц в файле»

    SQL-запрос с использованием common_table_expression Сбой в Codeigniter, но не SQL Studio

    Давайте будем гением компьютера.