with sampleData as(
select 12111201 ACT_NO, to_date('2/1/2009' ,'mm/dd/rrrr') DATE1 , 66600.00 AMOUNT from dual union all
select 12111201 ACT_NO, to_date('8/31/2009','mm/dd/rrrr') DATE1 , 66600.00 AMOUNT from dual union all
select 12111201 ACT_NO, to_date('7/29/2008','mm/dd/rrrr') DATE1 , 133200.00 AMOUNT from dual union all
select 12111201 ACT_NO, to_date('5/19/2009','mm/dd/rrrr') DATE1 , 66600.00 AMOUNT from dual
)
select extract(year from date1) date1_year
,sum(amount) amount_summed
,count(distinct ACT_NO) distinctAccounts
, count(*) total_occurrences
from sampleData
/*其中TO_DATE之间DATE1('01 -JAN-2009' , 'DD-MON-YYYY') 和TO_DATE('31-DEC-2009 23时59' 分59秒,“DD- MON-YYYY HH24:MI:SS')*/--from @ APC的答案
group by extract(year from date1)
/
DATE1_YEAR AMOUNT_SUMMED DISTINCTACCOUNTS TOTAL_OCCURRENCES
---------------------- ---------------------- ---------------------- ----------------------
2008 133200 1 1
2009 199800 1 3
您也可以尽管除非你想创建函数的索引使用extract(year from dateField)
,利用@ APC的或@托尼安德鲁斯'是今年过滤的方式。
TRUNC(date1,'YY')是TO_CHAR的替代方法 – 2011-05-27 03:32:54