Debería ser:
SELECT SalesID, COUNT(*)
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
En cuanto a su consulta inicial:
- No se puede hacer un SELECT * ya que esta operación requiere un GROUP BY y columnas tiene que ser en el GROUP BY o en una función agregada (es decir, COUNT, SUM, MIN, MAX, AVG, etc.)
- Como se trata de una operación GROUP BY, una cláusula HAVING lo filtrará en lugar de DONDE
Editar:
Y me acaba de ocurrir esto, si desea ver qué elementos están allí más de una vez (pero esto depende de qué base de datos que está utilizando):
;WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY SalesID ORDER BY SalesID) AS [Num]
FROM AXDelNotesNoTracking
)
SELECT *
FROM cte
WHERE cte.Num > 1
Por supuesto, esto solo muestra las filas que han aparecido con el mismo SalesID pero no muestra el valor de SalesID inicial que ha aparecido más de una vez. Es decir, si aparece un SalesID 3 veces, esta consulta mostrará las instancias 2 y 3, pero no la primera instancia. Aún así, podría ser útil dependiendo de por qué está buscando valores múltiples de SalesID.
Edit2:
La siguiente consulta fue publicada por APC a continuación y es mejor que el CTE menciono anteriormente, ya que muestra todas las filas en las que un SalesID ha aparecido más de una vez. Lo incluyo aquí para completarlo. Simplemente agregué un ORDER BY para mantener agrupados los valores de SalesID. El ORDER BY también podría ayudar en el CTE anterior.
SELECT *
FROM AXDelNotesNoTracking
WHERE SalesID IN
( SELECT SalesID
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
)
ORDER BY SalesID
qué variedad de SQL? MySQL? Microsoft SQL Server? ¿Oráculo? ¿Acceso? etc. – UnhandledExcepSean