У меня есть данные в представлении, где значения столбца Col_Head должны быть заголовками столбцов (они постоянны для каждой последовательности данных от 1 до 8.

И записи столбца Value должны быть в виде значений строк.

Мне нужно написать некоторый SQL, который переносит / перемещает строки из Col_Head в качестве заголовков столбцов.

Примере:

enter image description here

Ожидаемые данные:

enter image description here

1
Velocity 20 Июл 2020 в 07:11

1 ответ

Лучший ответ

Если у вас был определенный идентификатор для каждого человека, вам не нужно было создавать CTE в любом случае.

Во-первых, я создаю определенный идентификатор для каждого человека, подобного этому, с помощью CTE: sp_id

   /*Create CTE*/
    With tempTable as
    (
    select  
     row_number() over( order by(select 0) ) row_num,
    *
    from myTable
    ),newTable as(
    
    select 
    case when (row_num %8)>0 then (row_num /8)+1 else (row_num /8) end sp_Id,
    *
    from tempTable 
    )  

  /*MainQuery*/  
    select 
    *
    from (select sp_id, Col_Header,[Value] from newTable )as temp 
    pivot
    (
    max([Value])
    for Col_Header in ([Emp name],[Emp Dept],[Emp Grade],[Emp class],[Emp Sal],[Emp manager],[Emp Date of join],[Emp documents])
    ) pivotTable 

result

1
hesam akbari 20 Июл 2020 в 07:32