it-swarm-es.tech

Consulta de SQL Server - Seleccionando COUNT (*) con DISTINCT

En SQL Server 2005 tengo una tabla cm_production que lista todo el código que se ha puesto en producción. La tabla tiene un ticket_number, program_type y program_name y Push_number junto con algunas otras columnas.

OBJETIVO: contar todos los nombres de los programas DISTINCT por tipo de programa y número Push

Lo que tengo hasta ahora es:

DECLARE @Push_number INT;
SET @Push_number = [HERE_ADD_NUMBER];

SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] 
FROM cm_production 
WHERE [email protected]_number 
GROUP BY program_type

Esto me lleva parcialmente allí, pero está contando todos los nombres de programas, no los distintos (lo cual no espero que haga en esa consulta). Supongo que no puedo entender cómo decirle que solo cuenten los distintos nombres de los programas sin seleccionarlos. O algo.

366
somacore

Cuente todos los nombres de programas DISTINCT por tipo de programa y número Push

SELECT COUNT(DISTINCT program_name) AS Count,
  program_type AS [Type] 
FROM cm_production 
WHERE [email protected]_number 
GROUP BY program_type

DISTINCT COUNT(*) devolverá una fila por cada cuenta única. Lo que desea es COUNT(DISTINCT <expression>) : evalúa la expresión de cada fila en un grupo y devuelve el número de valores únicos, no nulos.

630
Remus Rusanu

Necesitaba obtener el número de ocurrencias de cada valor distinto. La columna contenía información de la región. La simple consulta SQL con la que terminé fue:

SELECT Region, count(*)
FROM item
WHERE Region is not null
GROUP BY Region

Lo que me daría una lista como, digamos:

Region, count
Denmark, 4
Sweden, 1
USA, 10
92
Netsi1964

Tienes que crear una tabla temporal para las distintas columnas y luego consultar el recuento de esa tabla

SELECT COUNT(*) 
FROM (SELECT DISTINCT column1,column2
      FROM  tablename  
      WHERE condition ) as dt

aqui dt es una tabla temporal

32
venkatesh
SELECT COUNT(DISTINCT program_name) AS Count, program_type AS [Type] 
FROM cm_production 
WHERE [email protected]_number 
GROUP BY program_type
15
van

prueba esto:

SELECT
    COUNT(program_name) AS [Count],program_type AS [Type]
    FROM (SELECT DISTINCT program_name,program_type
              FROM cm_production 
              WHERE [email protected]_number
         ) dt
    GROUP BY program_type
13
KM.