Oracle11g 透视还是取消透视查询结果?

Oracle11g 透视还是取消透视查询结果?,oracle11g,oracle10g,oracle-sqldeveloper,Oracle11g,Oracle10g,Oracle Sqldeveloper,我不熟悉Oracle中令人困惑的pivot和unpivot操作符。有人能帮我分析一下这样一个查询的结果吗 SELECT * FROM ( SELECT ROUND(((SELECT COUNT(*) FROM TABLE_X WHERE X = 1) / (SELECT (COUNT(*)) FROM TABLE_X) * 100))AS X_FIELD, ROUND(((SELECT COUNT(*) FROM TABLE_Y WHERE Y = 1) / (SELEC

我不熟悉Oracle中令人困惑的pivot和unpivot操作符。有人能帮我分析一下这样一个查询的结果吗

SELECT * FROM
(
    SELECT
    ROUND(((SELECT COUNT(*) FROM TABLE_X WHERE X = 1) / (SELECT (COUNT(*)) FROM TABLE_X) * 100))AS X_FIELD,
    ROUND(((SELECT COUNT(*) FROM TABLE_Y WHERE Y = 1) / (SELECT (COUNT(*)) FROM TABLE_Y) * 100))AS Y_FIELD FROM DUAL

);
结果如下:

X_FIELD        Y_FIELD
----------     ----------
37             26
FIELDS         PERCENTAGE
----------     ----------
X_FIELD        37 
Y_FIELD        26
我需要这样的东西:

X_FIELD        Y_FIELD
----------     ----------
37             26
FIELDS         PERCENTAGE
----------     ----------
X_FIELD        37 
Y_FIELD        26
请指导我如何做到这一点。

尝试以下方法:

WITH temp_result AS
  (SELECT ROUND((
    (SELECT COUNT(*) FROM TABLE_X WHERE X = 1) /(SELECT (COUNT(*)) FROM TABLE_X) * 100))AS X_FIELD,
    ROUND(((SELECT COUNT(*) FROM TABLE_Y WHERE Y = 1) /(SELECT (COUNT(*)) FROM TABLE_Y) * 100))AS Y_FIELD
  FROM DUAL
  )
SELECT *
FROM temp_result UNPIVOT INCLUDE NULLS ( VALUE FOR COL IN (X_FIELD,Y_FIELD));

很高兴它起作用了。您可以接受已解决的答案,以便将来搜索类似问题的用户可以在不阅读注释的情况下使用它。