2013-02-22 78 views
1

的Oracle 11g如何包含作爲列值返回的總行數?

我想包括MAX(ROWNUM)作爲新列,以獲得理想的效果。實質上,我想將這個QueryA的結果作爲新的列添加到QueryB的當我在QueryB中包含max(rownum)時,我得到'沒有單組功能。當我通過可樂或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 

回答

2

可以使用analyti c形式的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 
+1

@ PM77-1 - 爲什麼我們需要使用'SUM'?你認爲我們需要「SUM」嗎?這聽起來像是要確定結果集中的行數,因此COUNT似乎是一個明智的選擇。 – 2013-02-22 21:52:02

+0

我正在考慮** MAX ** - 但即使這是錯誤的。請忽略我的評論。 – 2013-02-22 22:05:43

相關問題