表a:
工号 交费金额 时间
001 10 2006-1
001 10 2006-2
。。
002 0 2006-1
002 0 2006-2
002 12 2006-3
002 0 2006-4需要的结果是2006年的交费次数:
工号 交费次数
001 12
002 10问题的关键是:如果一月份交过,其他月份没有交,那视为每月都交了,所有002的统计结果是10,不是单纯的不是零就属于交,是零就没交,谢谢各位了
工号 交费金额 时间
001 10 2006-1
001 10 2006-2
。。
002 0 2006-1
002 0 2006-2
002 12 2006-3
002 0 2006-4需要的结果是2006年的交费次数:
工号 交费次数
001 12
002 10问题的关键是:如果一月份交过,其他月份没有交,那视为每月都交了,所有002的统计结果是10,不是单纯的不是零就属于交,是零就没交,谢谢各位了
select
'工号',13-max(to_number(substr('时间',6))) '交费次数'
from
a
where
'时间' like '2006-%'
and '交费金额'>0
group by
'工号'
2 /A B C
-------------------- ---------- --------------------
001 10 2006-1
001 10 2006-2
001 0 2006-3
002 10 2006-1
002 0 2006-1
002 0 2006-2
002 12 2006-37 rows selectedSQL>
SQL> select a,sum(b)
2 from bbs
3 group by a
4 /A SUM(B)
-------------------- ----------
001 20
002 22SQL>
from
a
where
'交费金额 '> 0
group by
'工号 '