title: Except functionality in postgres; return row and column to know the exact different value
body: <p>I am trying to create a script that compares two datasets for differences. I found the except functionality to be surprisingly good and thorough. In underneath script the result is almost what I eventually want to have. I also want to have the exact location of the difference. In underneath script i'd like it to return something that any person could understand that in row with id ... the value ... of column ... is different. The data ill eventually work with will have an enormous number of rows and columns. Just knowing which rows are different is a good start. But being able to point out the exact reason the except statement goes off would be a lot better. </p>
  
  <pre><code>DROP TABLE if exists werk.empdtl1;
  create table werk.empdtl1(empid int,empname varchar(30));
  
  insert into werk.empdtl1 values(1,'one');
  insert into werk.empdtl1 values(2,'two');
  insert into werk.empdtl1 values(3,'three');
  insert into werk.empdtl1 values(4,'four');
  insert into werk.empdtl1 values(5,'five');
  
  DROP TABLE if exists werk.empdtl2;
  create table werk.empdtl2(empid int,empname varchar(30));
  insert into werk.empdtl2 values(1,'one');
  insert into werk.empdtl2 values(2,'two');
  insert into werk.empdtl2 values(3,'three');
  insert into werk.empdtl2 values(4,'four');
  insert into werk.empdtl2 values(6,'six');
  insert into werk.empdtl2 values(5,'six');
  
  TABLE werk.empdtl2 EXCEPT TABLE werk.empdtl1
  UNION ALL
  (TABLE werk.empdtl1 EXCEPT TABLE werk.empdtl2 ) ;
  </code></pre>