Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
oraclesql中的PIVOT_Sql_Oracle_Oracle11g_Pivot - Fatal编程技术网

oraclesql中的PIVOT

oraclesql中的PIVOT,sql,oracle,oracle11g,pivot,Sql,Oracle,Oracle11g,Pivot,我编写了一个查询,如下所示 SELECT DISTINCT SBPC1.BATCH_ID AS BATCH_ID, Sbpc1.Registration_Id AS Registration_Id, Submtd_Val_Code.Submtd_Val_Cd, Submtd_Val_Code.Submtd_Val_Amount , Submtd_Val_Code.Submtd_Bill_Processing_Cd_Seq --Submtd_Val_Cod

我编写了一个查询,如下所示

    SELECT DISTINCT SBPC1.BATCH_ID AS BATCH_ID,
  Sbpc1.Registration_Id        AS Registration_Id,
  Submtd_Val_Code.Submtd_Val_Cd,
  Submtd_Val_Code.Submtd_Val_Amount ,
  Submtd_Val_Code.Submtd_Bill_Processing_Cd_Seq
  --Submtd_Val_Code.rownumber
  --rownum
FROM TEMPORARY_EXTRACT_BASE PARTITION (TEMPORARY_EXTRACT_BA_815771) TEB,
  Submtd_Bill_Processing_Cd Sbpc1 ,
  (SELECT Sbpc1.Batch_Id  AS Batch_Id,
    Sbpc1.Registration_Id AS Registration_Id,
    Submtd_Val_Cd,
    SBPC1.SUBMTD_VAL_AMOUNT,
    Sbpc1.Submtd_Bill_Processing_Cd_Seq,
    rownum AS rownumber
  FROM Temporary_Extract_Base Partition (Temporary_Extract_Ba_815771) Teb,
    Submtd_Bill_Processing_Cd Sbpc1
  WHERE SBPC1.BATCH_ID     = TEB.EXTRACT_BATCH_ID
  AND SBPC1.REGISTRATION_ID=TEB.REGISTRATION_ID
  AND TEB.BATCH_ID         = 815771
  AND SBPC1.BATCH_ID      IN
    (SELECT BATCH_ID
    FROM PBLSH_BATCH_INCLUSION
    WHERE DATA_PBLSH_ID IN
      (SELECT DATA_PBLSH_ID FROM Batch WHERE Batch_Id = 815771
      )
    )
  AND Upper(Sbpc1.Submtd_Val_Cd) <> 'NOT AVAILABLE'
  AND Upper(Sbpc1.Submtd_Val_Cd) <> 'NOT SUPPLIED'
  ORDER BY TEB.REGISTRATION_ID,
    Sbpc1.SUBMTD_BILL_PROCESSING_CD_SEQ
  )Submtd_Val_Code
WHERE SBPC1.BATCH_ID     = TEB.EXTRACT_BATCH_ID
AND SBPC1.REGISTRATION_ID=TEB.REGISTRATION_ID
AND TEB.BATCH_ID         = 815771
AND SBPC1.BATCH_ID      IN
  (SELECT BATCH_ID
  FROM PBLSH_BATCH_INCLUSION
  WHERE DATA_PBLSH_ID IN
    (SELECT DATA_PBLSH_ID FROM BATCH WHERE Batch_Id = 815771
    )
  )
AND Submtd_Val_Code.Registration_Id =Teb.Registration_Id
ORDER BY SBPC1.BATCH_ID,
  SBPC1.REGISTRATION_ID,
  Submtd_Val_Code.SUBMTD_BILL_PROCESSING_CD_SEQ;
其输出为:

对于每个注册id,我需要如下输出:

前5个有效值应加载到相应的列中。如果通过一个select语句而不使用存储过程来实现,效果会更好


任何人请帮忙。。。提前感谢

仅当所选值列表中存在任何聚合函数时,才能使用Pivot:

使用pivot的示例如下:

SELECT *
FROM   (SELECT product_code, quantity
        FROM   pivot_test)
PIVOT  (SUM(quantity) AS sum_quantity FOR (product_code) IN ('A' AS a, 'B' AS b, 'C' AS c));
如果可以使用一个聚合函数,那么可以尝试将整个select语句作为cte公共表表达式,然后将该表与pivot方法一起使用

例如:

with cte as 
(----- your sql statement--- )
select * from cte
pivot (sum(val) for name in ( select name from cte ) );

仅当所选值列表中存在任何聚合函数时,才能使用Pivot:

使用pivot的示例如下:

SELECT *
FROM   (SELECT product_code, quantity
        FROM   pivot_test)
PIVOT  (SUM(quantity) AS sum_quantity FOR (product_code) IN ('A' AS a, 'B' AS b, 'C' AS c));
如果可以使用一个聚合函数,那么可以尝试将整个select语句作为cte公共表表达式,然后将该表与pivot方法一起使用

例如:

with cte as 
(----- your sql statement--- )
select * from cte
pivot (sum(val) for name in ( select name from cte ) );

是的,pivot仅用于此目的。您可以尝试以下操作:以cte作为代码选择不同的SBPC1.BATCH_ID作为批次_ID,SBPC1.Registration_ID作为注册_ID,Submtd_Val_代码。Submtd_Val_Cd,Submtd_Val_代码。Submtd_Val_金额,Submtd_Val_Code.Submtd_Bill_Processing_Cd_Seq-您的总查询--从cte pivot sumRegistration_Id中选择*用于46057074605708中的注册_Id,。。。。代码是,pivot仅用于此目的。您可以尝试以下操作:以cte作为代码选择不同的SBPC1.BATCH_ID作为批次_ID,SBPC1.Registration_ID作为注册_ID,Submtd_Val_代码。Submtd_Val_Cd,Submtd_Val_代码。Submtd_Val_金额,Submtd_Val_Code.Submtd_Bill_Processing_Cd_Seq-您的总查询--从cte pivot sumRegistration_Id中选择*用于46057074605708中的注册_Id,。。。。密码