使用pivot将行更改为列,以便使用sql对数据进行排序

使用pivot将行更改为列,以便使用sql对数据进行排序,sql,pivot,oracle12c,Sql,Pivot,Oracle12c,我有一个视图中的数据,其中Col_Head列值应该是列标题(对于从1到8的每个数据序列,它们都是常量) 和Value列条目需要作为行值 我需要编写一些SQL语句,将列头中的行转换为列头 例如: 预期数据: 如果您为每个人都有一个特定的Id,那么您不需要以任何方式创建CTE 首先,我通过CTE为每个这样的人创建特定的Id: 您使用的是哪种DBMS?请编辑您的问题并相应地添加标签。同时提及版本。例如Oracle 11c,MySQL,MSSQL 2012等,Oracle 12c,UpdatedTa

我有一个视图中的数据,其中Col_Head列值应该是列标题(对于从1到8的每个数据序列,它们都是常量)

Value
列条目需要作为行值

我需要编写一些SQL语句,将列头中的行转换为列头

例如:

预期数据:


如果您为每个人都有一个特定的Id,那么您不需要以任何方式创建CTE

首先,我通过
CTE
为每个这样的人创建特定的Id:


您使用的是哪种DBMS?请编辑您的问题并相应地添加标签。同时提及版本。例如
Oracle 11c
MySQL
MSSQL 2012
等,Oracle 12c,UpdatedTanks,这也可以动态完成吗?没有硬编码列标题?类似pivot xml的东西?我尝试使用xml关键字,但没有效果您使用的是Oracle还是SQL?Oracle数据库
   /*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