如何使用Oracle 11从子选择结果集中选择多个值?

时间:2016-10-19 13:59:24

标签: oracle subquery

我有一个复杂的查询并获取文本数据行。这部分工作正常。我想包括返回的行数,以便导出的电子表格更容易过滤。

假设我们有这样的查询:

SELECT
    TRIM(COL_1 || ' (' || COL_2 || ')') AS MY_DATA
FROM
    TABLE_1
    INNER JOIN TABLE_2...
WHERE
    TABLE_1.COL_1=...
ORDER BY
    TABLE_1.COL_1

我能做到:

SELECT * FROM (quoted query) 

它给了我结果集。

我能做到:

SELECT MY_DATA FROM (quoted query) 

它给了我结果集。

我能做到:

SELECT COUNT(MY_DATA) FROM (quoted query) 

它给了我行数。

但是当我尝试时:

SELECT COUNT(MY_DATA), MY-DATA FROM (quoted query) 

我得到了

  

ORA-00937:不是单组组功能

使用Oracle 11,我可以从子选择中选择行计数和行详细信息吗?在我的情况下,子选择是复杂的,我不想复制它来分别获取计数和细节。我试过了WITH/AS,但遇到了同样的错误。

====

注意:这不是建议问题的重复 - 在我的情况下我不使用任何分组。它不是分组问题 - 只是一个误导性的错误消息。

1 个答案:

答案 0 :(得分:3)

您需要一个分析函数:

SELECT COUNT(MY_DATA) OVER () ct, MY-DATA FROM (quoted query)

这将为您提供返回的每行中select所返回的记录总数的计数。