title: SQL: How to find duplicates based on two fields?
body: <p>I have rows in an Oracle database table which should be unique for a combination of two fields but the unique constrain is not set up on the table so I need to find all rows which violate the constraint myself using SQL.  Unfortunately my meager SQL skills aren't up to the task.</p>
  
  <p>My table has three columns which are relevant: entity_id, station_id, and obs_year. For each row the combination of station_id and obs_year should be unique, and I want to find out if there are rows which violate this by flushing them out with an SQL query.</p>
  
  <p>I have tried the following SQL (suggested by <a href="https://stackoverflow.com/questions/748542/how-to-find-duplicate-field-combo">this previous question</a>) but it doesn't work for me (I get ORA-00918 column ambiguously defined):</p>
  
  <pre><code>SELECT
  entity_id, station_id, obs_year
  FROM
  mytable t1
  INNER JOIN (
  SELECT entity_id, station_id, obs_year FROM mytable 
  GROUP BY entity_id, station_id, obs_year HAVING COUNT(*) &gt; 1) dupes 
  ON 
  t1.station_id = dupes.station_id AND
  t1.obs_year = dupes.obs_year
  </code></pre>
  
  <p>Can someone suggest what I'm doing wrong, and/or how to solve this?</p>