支点及;oraclesql中的UNPIVOT
我对PIVOT&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
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是一个新专栏。解释它是什么。更多信息请查看此。试着提出一个问题,如果有问题,把它贴在这里,我们会很乐意提供帮助。