支点及;oraclesql中的UNPIVOT

支点及;oraclesql中的UNPIVOT,sql,oracle,Sql,Oracle,我对PIVOT&UNPIVOT一点也不熟悉。有人能帮我做这个转置吗。我有这样的数据: No. Date Type Amount Amount_R 1234 15-Nov A 0 0 1234 15-Nov B 0 0 1234 15-Nov C 10 10 5678 15-Nov B 5 0 No. Date A B

我对PIVOT&UNPIVOT一点也不熟悉。有人能帮我做这个转置吗。我有这样的数据:

No.     Date    Type    Amount  Amount_R
1234    15-Nov   A         0     0
1234    15-Nov   B         0     0
1234    15-Nov   C        10     10
5678    15-Nov   B         5     0
No.      Date    A   B   C   C_R
1234    15-Nov   0   0   10  100
5678    15-Nov   0   5   0    0
我需要这样的数据:

No.     Date    Type    Amount  Amount_R
1234    15-Nov   A         0     0
1234    15-Nov   B         0     0
1234    15-Nov   C        10     10
5678    15-Nov   B         5     0
No.      Date    A   B   C   C_R
1234    15-Nov   0   0   10  100
5678    15-Nov   0   5   0    0

有人能帮我查询一下吗。

考虑到您的表格是这样的:

    create table tab1 (col1 NUMBER(10), col2 DATE, col3 VARCHAR2(2), amt NUMBER(10), amt_r NUMBER(10));
以下类型的内容可能会有所帮助:

    SELECT * FROM
          (SELECT col1, col2, col3,
                  amt,
                  amt_r
             FROM tab1)
            PIVOT (MAX(NVL(amt, 0))
              FOR col3 IN ('A',
                           'B',
                           'C'));
你的问题中也遗漏了很多细节。请详细说明。 也可以在互联网上阅读Pivot/Unpivot。
您没有指定如何计算输出中C\u R列的值。如果只需要显示值,可以使用以下查询

SELECT "No.","Date",NVL(A,0),NVL(A_R,0),NVL(B,0),NVL(B_R,0),NVL(C,0),NVL(C_R,0)
FROM (
SELECT *
FROM
(SELECT "No.","Date","Type","Amount","Amount_R"
FROM t)
PIVOT (MAX("Amount"),MAX("Amount_R") as "R" FOR "Type" IN ('A' as A,'B' as B,'C' as C)));

C_R是一个新专栏。解释它是什么。更多信息请查看此。试着提出一个问题,如果有问题,把它贴在这里,我们会很乐意提供帮助。