Your COUNT function is returning null because of your group by.

try this

set echo on
drop table t_tnc;
drop table t_citation;

create table t_tnc as
select 1 patent_id, 0 ref_ct from dual union all
select 4,           0  from dual union all
select 6,           0  from dual;

create table t_citation as
select 1 patent_id, 91 cited_patent_nr from dual union all
select 1          , 92 cited_patent_nr  from dual union all
select 1          , null cited_patent_nr   from dual union all
select 2          , 91 cited_patent_nr   from dual union all
select 4          , null cited_patent_nr  from dual union all
select 4          , 91 cited_patent_nr  from dual;

SELECT * from t_tnc;

UPDATE t_tnc t
   SET (ref_ct) =
          (  SELECT COUNT (r.cited_patent_nr) AS ref_ct
               FROM t_citation r
              WHERE r.patent_id = t.patent_id
           --GROUP BY r.patent_id
           );

SELECT * from t_tnc;
rollback;

================================================
SQL> SELECT * from t_tnc

 PATENT_ID     REF_CT
---------- ----------
         1          2
         4          1
         6          0

3 rows selected.

-- 
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
oracle-plsql-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en

Reply via email to