Esperaba ejecutar una única consulta y obtener resultados de eso. Sin embargo, MSSQL se queja de un error de sintaxis cerca de la palabra clave GROUP
. Tenía la esperanza de hacer lo siguiente.Subselección falla, pero como ver funciona
SELECT COUNT(*) AS cnt,Field_2
FROM (SELECT DISTINCT Field_1, Field_2
FROM Table_1)
GROUP BY Field_2
HAVING COUNT(*) > 1
En lugar de eso tuvieron que crear una vista, View_1, con la consulta
SELECT DISTINCT Field_1, Field_2
FROM Table_1
y luego hacer un
SELECT COUNT(*) AS cnt, Field_2
FROM View_1
GROUP BY Field_2
HAVING COUNT(*) > 1
La cuestión es por qué, en mi opinión, es esencialmente el mismo SQL.
Nota: Los nombres de campo, tabla y vista se han cambiado para proteger a los inocentes. ;-)
Aha, una solución simple. Muchas gracias. –
Para ser justos, no se puede culpar a SQL Server por este diseño de lenguaje incorrecto porque está especificado en Standard SQL-92. En sus escritos, [Hugh Darwen] (http://www.dcs.warwick.ac.uk/~hugh/TTM/Importance-of-Column-Names.pdf) siempre emplea un nombre de correlación de tabla peyorativa (algo más de SQL -92; 'alias' es coloquial :) como 'TEETH_GNASHER'. – onedaywhen