You misunderstand what an outer join does, it means return the record even if it isn't in the joined table. Your query should look like this:
SELECT ALL a.PARID, a.TAXYR
FROM IAS4.PARDAT a
WHERE a.TAXYR=2006
AND a.CUR='Y'
and not exists
(select null
from ias4.pardat b
where a.PARID=b.PARID
and b.TAXYR=2007
AND b.CUR='Y')
or like this.
SELECT ALL IAS4.PARDAT.PARID, IAS4.PARDAT.TAXYR
FROM IAS4.PARDAT, IAS4.PARDAT PARDAT_A1
WHERE (IAS4.PARDAT.TAXYR=2006
AND PARDAT_A1.TAXYR=2007
AND IAS4.PARDAT.CUR='Y')
AND (IAS4.PARDAT.PARID=PARDAT_A1.PARID(+))
and PARDAT_A1.TAXYR is null;
Either one will work. When you outer join and the related record doesn't exist, then all the row information is returned as null. So by checking to see if the returned tax year from pardat_a1 is null, it indicates that the partner is in 2006, but NOT 2007. Notice the "(+)" in the where clause. This indicates an outer join.
Bill
Oracle DBA/Developer
New York State, USA