Oracle 使用decod-How';表演怎么样?
我发现了很多关于这种被称为旋转的max(解码)技术的例子,例如下面的例子。 有人有在大型数据集上使用此功能的经验吗?它是如何形成的Oracle 使用decod-How';表演怎么样?,oracle,oracle11g,transpose,Oracle,Oracle11g,Transpose,我发现了很多关于这种被称为旋转的max(解码)技术的例子,例如下面的例子。 有人有在大型数据集上使用此功能的经验吗?它是如何形成的 CREATE TABLE po_table ( po_num NUMBER, terms_type NUMBER, terms_description VARCHAR2(20) ); INSERT INTO po_table VALUES(10, 1, 'Desc-10-1'); INSERT INTO po
CREATE TABLE po_table (
po_num NUMBER,
terms_type NUMBER,
terms_description VARCHAR2(20)
);
INSERT INTO po_table VALUES(10, 1, 'Desc-10-1');
INSERT INTO po_table VALUES(10, 2, 'Desc-10-2');
INSERT INTO po_table VALUES(10, 3, 'Desc-10-3');
INSERT INTO po_table VALUES(20, 1, 'Desc-20-1');
INSERT INTO po_table VALUES(20, 3, 'Desc-20-3');
INSERT INTO po_table VALUES(30, NULL, NULL);
COMMIT;
SELECT
po_num,
MAX(DECODE(terms_type, 1, terms_type)) AS terms1,
MAX(DECODE(terms_type, 1, terms_description)) AS terms1Desc,
MAX(DECODE(terms_type, 2, terms_type)) AS terms2,
MAX(DECODE(terms_type, 2, terms_description)) AS terms2Desc,
MAX(DECODE(terms_type, 3, terms_type)) AS terms3,
MAX(DECODE(terms_type, 3, terms_description)) AS terms3Desc
FROM
po_table
GROUP BY po_num
ORDER BY po_num;
在Exadata X2-2全机架上试用,具有10mio行、3个不同组,运行时间为16秒。以前在500mio行上使用过,这不是什么大问题
为什么不使用pivot子句?它仍然存在严重的错误(11.2.0.4中未修复)。是否有任何特定的原因不使用本机
PIVOT
子句(假设您使用的是11g版本)?您可以参考一些关于这些错误的详细信息吗? 我偶尔使用它,到目前为止我没有发现任何错误。如果你没有发现它,你会得到错误:ORA-03113:通讯频道上的文件结尾,没关系,如果你发现了,有一个补丁可用@Jörg,请回答@Jörg,目前我只有12万个值行需要转置,只有大约30种类型,到目前为止还不错。它已经投入生产几年了,没有任何问题。我们需要一段时间才能达到百万大关。