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