Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Sql Developer Oracle进行动态数据透视查询_Oracle_Plsql_Pivot_Oracle Sqldeveloper_Dynamic Pivot - Fatal编程技术网

使用Sql Developer Oracle进行动态数据透视查询

使用Sql Developer Oracle进行动态数据透视查询,oracle,plsql,pivot,oracle-sqldeveloper,dynamic-pivot,Oracle,Plsql,Pivot,Oracle Sqldeveloper,Dynamic Pivot,初始表格学生 NAME School Class John Hs English Steve Hs Maths Matthew Hs Science Jim Hs History 需要输出:我需要查询自动从初始表中提取名称列数据,并将其更改为输出中的列标题,因为名称将不断更改,所以我无法使用简单的pivot查询硬编码名称。我是一个新的枢轴查询,所以我想请求是否有人可以帮助我。多谢各位 School Joh

初始表格学生

NAME     School    Class
 John     Hs      English
 Steve    Hs      Maths
 Matthew  Hs      Science
 Jim      Hs      History
需要输出:我需要查询自动从初始表中提取名称列数据,并将其更改为输出中的列标题,因为名称将不断更改,所以我无法使用简单的pivot查询硬编码名称。我是一个新的枢轴查询,所以我想请求是否有人可以帮助我。多谢各位

School  John     Steve  Matthew  Jim
Hs      English  Maths  Science  History
以下是我尝试的:*注意,我试图在Oracle Sql Developer中使用此查询来实现输出格式

declare 
        sqlqry clob;
        cols clob;
  begin 
  select listagg('''' || NAME || ''' as "' || NAME || '"', ',') within group   (order by NAME)
  into cols
  from (select distinct NAME from Students);
  sqlqry := 
  '
   select * from(select NAME,SCHOOL,CLASS from Students)
   pivot(MAX(CLASS) FOR NAME IN (' || cols || ')
   )';
   execute immediate sqlqry;
   end;

您的做法是正确的,但如果为至少一个学生定义了多个类,则该案例将失败。其中的行号分析函数可解决此问题。因此,创建一个包含SYS_REFCURSOR的存储函数:

假设又插入了一条记录

Name     School    Class
----     ------    -------
Jim      Hs        History
然后调用

VAR rc REFCURSOR
EXEC :rc := get_student_rs;
PRINT rc
从SQL Developer的命令行查看结果集,结果集将是:

RN  SCHOOL  Jim      John     Matthew  Steve
--  ------  -------  -------  -------  ------
1   Hs      Maths    English  Science  Maths
2   Hs      History 

    

pl/sql片段似乎很好。有错误吗?是的,当我在sql developer中运行这个命令时,它在命令的第1行中给出了一个未知错误。我不认为应该这样写。PL SQL有一些问题。这是否适用于select*fromselect NAME,SHOOL,CLASS FROMS pivotMAXCLASS FOR NAME在select listagg | | NAME | | | | | | | | | | | | | | | | | | | |
RN  SCHOOL  Jim      John     Matthew  Steve
--  ------  -------  -------  -------  ------
1   Hs      Maths    English  Science  Maths
2   Hs      History