Qué tal tengo esta duda:
 
Yo tengo dos bases de datos, diferentes una es PostgreSQL y la otra es SQL Server 2000, yo he estado haciendo querys en ambas bases similares a estos:
 
-- PostgreSql
SELECT DISTINCT ON(act_id) act_id::integer, con_id::integer FROM tablaA INNER JOIN tablaB  USING(con_id) ORDER BY act_id;
 
--SQL Server
SELECT act_id, con_id FROM tablaA a INNER JOIN tablaB b ON a.con_id=b.con_id GROUP BY  act_id, con_id ORDER BY act_id, con_id;
 
Y mediante estos dos obtengo los mismos resultados, he ejecutado estos dos en postgres para comparar los resultados y son identicos. Pero este método no me resulta cuando hay dos claves únicas:
 
--PostgreSql
SELECT DISTINCT ON(act_id) act_id::integer, addr_id::integer, con_id::integer FROM (SELECT DISTINCT ON(act_id) act_id, con_id FROM tablaA) AS Uno INNER JOIN  (SELECT DISTINCT ON(addr_id) addr_id, con_id FROM tablaB) AS Dos USING(con_id) USING(con_id) ORDER BY act_id;
 
--SQL Server
SELECT act_id, addr_id, con_id FROM (SELECT act_id, con_id FROM tablaA GROUP BY act_id, con_id) AS Uno INNER JOIN (SELECT addr_id, con_id FROM tablaB GROUP BY addr_id, con_id) AS Dos  ON Uno.con_id=Dos.con_id ORDER BY act_id;
 
Aquí los resultados son diferentes, yo necesito obtener valores únicos en este caso la columna act_id, debe ser única por ello no uso el comando DISTINCT ya que si entiendo bien este evalua la fila entera no la columna como lo hace DISTINCT ON, por ello agrupo los valores para obtener un efecto igual a DISTINCT ON.
 
Me puedan dar alguna sugerencia de como poder ejecutar estos querys en las distintas bases de datos obteniendo los mismos resultados.


Busca a la vez en Internet, en directorios, en enciclopedias... Atrévete con el nuevo MSN Search