輸出我終於想通了與舍甫琴科M的鏈接。 下面是解決方案:
select grouped_table.nat_key,
grouped_table.attr,
grouped_table.order_by,
case
when attr is null
then row_number() over (partition by nat_key, attr, grp order by order_by)
else null
end rowrank
from (
select the_table.*,
row_number() over (partition by nat_key order by order_by) - row_number() over (partition by nat_key, nvl2(attr, 1, 0) order by order_by) grp
from (
select 'A' nat_key, 'A' attr, 1 order_by from dual
union all
select 'A' nat_key, null attr, 2 order_by from dual
union all
select 'A' nat_key, 'A' attr, 4 order_by from dual
union all
select 'A' nat_key, 'I' attr, 6 order_by from dual
union all
select 'A' nat_key, null attr, 8 order_by from dual
union all
select 'A' nat_key, null attr, 10 order_by from dual
union all
select 'A' nat_key, null attr, 11 order_by from dual
union all
select 'B' nat_key, null attr, 2 order_by from dual
union all
select 'B' nat_key, null attr, 3 order_by from dual
union all
select 'B' nat_key, 'A' attr, 5 order_by from dual
union all
select 'B' nat_key, 'A' attr, 6 order_by from dual
union all
select 'B' nat_key, null attr, 9 order_by from dual
union all
select 'C' nat_key, 'A' attr, 1 order_by from dual
union all
select 'C' nat_key, 'A' attr, 5 order_by from dual
union all
select 'C' nat_key, 'I' attr, 6 order_by from dual
union all
select 'C' nat_key, null attr, 7 order_by from dual
union all
select 'C' nat_key, null attr, 8 order_by from dual
) the_table
) grouped_table
order by nat_key, order_by
謝謝!
相似:[基於來自多行SQL Server的標誌的時間總和](http://stackoverflow.com/questions/8046386/sum-of-time-based-on-flag-from-multiple-rows-sql -服務器)。 – 2012-03-30 14:14:32