我有一个复杂的查询并获取文本数据行。这部分工作正常。我想包括返回的行数,以便导出的电子表格更容易过滤。
假设我们有这样的查询:
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
,但遇到了同样的错误。
====
注意:这不是建议问题的重复 - 在我的情况下我不使用任何分组。它不是分组问题 - 只是一个误导性的错误消息。
答案 0 :(得分:3)
您需要一个分析函数:
SELECT COUNT(MY_DATA) OVER () ct, MY-DATA FROM (quoted query)
这将为您提供返回的每行中select所返回的记录总数的计数。