Sql 如何包含作为列值返回的总行数?

Sql 如何包含作为列值返回的总行数?,sql,oracle11g,max,rownum,Sql,Oracle11g,Max,Rownum,Oracle 11g 我希望将max(rownum)作为一个新列包含进来,以获得所需的结果。本质上,我想将这个QueryA的结果作为一个新列添加到QueryB。当我在QueryB中包含max(rownum)时,我得到了一个'not a single group函数。当我按可乐或rownum分组时,QueryB也不起作用 QueryA with data_row as ( select 1 as col_a from dual union all select 2 as col_a from du

Oracle 11g

我希望将max(rownum)作为一个新列包含进来,以获得所需的结果。本质上,我想将这个QueryA的结果作为一个新列添加到QueryB。当我在QueryB中包含max(rownum)时,我得到了一个'not a single group函数。当我按可乐或rownum分组时,QueryB也不起作用

QueryA

with data_row as
(
select 1 as col_a from dual union all
select 2 as col_a from dual union all 
select 3 as col_a from dual )
select max(rownum) as max_row from data_row
QueryB

with data_row as
( select 1 as col_a from dual union all
  select 2 as col_a from dual union all
  select 3 as col_a from dual)
select col_a, rownum from data_row
期望的结果

Col_a    Rownum   MaxRowNum
--------------------------------
1          1       3
2          2       3
3          3       3

您可以使用
count
函数的分析形式

SQL> ed
Wrote file afiedt.buf

  1  with data_row as (
  2    select 1 as colA from dual union all
  3    select 2 as cola from dual union all
  4    select 3 as cola from dual
  5  )
  6  select colA, rownum, count(*) over () cnt
  7*   from data_row
SQL> /

      COLA     ROWNUM        CNT
---------- ---------- ----------
         1          1          3
         2          2          3
         3          3          3

@PM77-1-为什么我们需要使用
SUM
?你认为我们需要做什么来求和?听起来目标似乎是确定结果集中的行数,因此
COUNT
似乎是一个明智的选择。实际上我考虑的是MAX,但即使这样也是错误的。请不要理会我的评论。