仅显示大于0的元组

时间:2018-07-15 15:51:14

标签: oracle function

我写了这个函数

CREATE OR REPLACE FUNCTION num_gettoni2
(
  cf_parlamentare IN parlamentari.cf %TYPE 
)
RETURN SYS_REFCURSOR
AS
my_cursor SYS_REFCURSOR;
BEGIN
   OPEN my_cursor FOR 
   SELECT l.id AS leg,
   COUNT(*) - lead(COUNT(*), 1, 0) over (order by l.datainizio) AS ct

   FROM legislature l, partecipazioni i, parlamentari p

   WHERE i.sedute_data >= l.datainizio 
   AND p.cf = i.parlamentare 
   AND p.cf = cf_parlamentare

   group by l.datainizio, l.id order by ct;
   RETURN my_cursor;
 END num_gettoni2;

这是输出

LEG  | CT                      
---- | ---  
 14  | 0                       
 15  | 0                       
 16  | 0                       
 17  | 1                       
 18  | 2

有没有办法只显示ct值大于0的元组?

1 个答案:

答案 0 :(得分:2)

像这样吗?

OPEN my_cursor FOR 
  select leg, ct
  from (-- your current query
        SELECT l.id AS leg,
          COUNT(*) - lead(COUNT(*), 1, 0) over (order by l.datainizio) AS ct
        FROM legislature l, partecipazioni i, parlamentari p
        WHERE i.sedute_data >= l.datainizio 
         AND p.cf = i.parlamentare 
         AND p.cf = cf_parlamentare
        group by l.datainizio, l.id order by ct
       )
  where ct > 0;
相关问题