使用pivot将行更改为列,以便使用sql对数据进行排序
我有一个视图中的数据,其中Col_Head列值应该是列标题(对于从1到8的每个数据序列,它们都是常量) 和使用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
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