Pregunta

Tengo un formulario que las personas pueden usar para enviar correos electrónicos a nuestros clientes.El usuario tiene una opción para seleccionar entre dos mensajes enlatados (mensaje "1" o mensaje "2").Detrás de las escenas, cada vez que golpean el botón "Enviar" que inicia sesión en una tabla "Registros" (siempre que la llegue a través de los manipuladores de errores).

Pretemos la tabla de registros tiene 2 columnas:

CUST_ID  EMAIL_NUM
0000         1
0000         2
0000         1
0000         1
0001         2
0002         1
0002         1
0003         2
0003         2
0003         2

Necesito una consulta que cuenta las y dos para cada Cust_ID.Por lo que el conjunto de resultados debe mirar algo así:

CUST_ID  EMAIL_1_COUNT  EMAIL_2_COUNT
0000          3              1
0001          0              1
0002          2              0
0003          0              3

He usado el recuento, los bys de grupo, los hendientes, mientras que, seleccionan sin sentido, pero como dije, probablemente estoy complicando algo relativamente fácil.

¿Fue útil?

Solución

select
  CUST_ID,
  sum(iif(EMAIL_NUM = 1, 1, 0)) as EMAIL_1_COUNT,
  sum(iif(EMAIL_NUM = 2, 1, 0)) as EMAIL_2_COUNT
from
  RECORDS
group by
  CUST_ID

Otros consejos

Otra opción a considerar es usar una consulta de pivote con Transform

TRANSFORM NZ(Count(RECORDS.Email_NUm),0) AS CountOfEmail_NUm
SELECT RECORDS.CUST_ID
FROM RECORDS
GROUP BY RECORDS.CUST_ID
PIVOT RECORDS.Email_NUm;

Esto podría producir cabezas de columna de CUST_ID, 1 y 2.Sin embargo, si tuvo otra tabla con los tipos de correo electrónico, entonces podría valer la pena (especialmente si tuvo una gran cantidad de tipos de correo electrónico que 2)

El SQL podría parecerse a este

TRANSFORM NZ(Count(r.Email_NUm),0) AS CountOfEmail_NUm
SELECT r.CUST_ID
FROM RECORDS r
     INNER JOIN EMAIL_TYPES et
     ON r.Email_NUm = et.Email_NUm
GROUP BY r.CUST_ID
PIVOT et.TYPE_NAME;

Produciendo esta salida

   CUST_ID | Work | Home 
   -------   ----   ----
   0000    | 3    | 1
   0001    | 0    | 1
   0002    | 2    | 0
   0003    | 0    | 3

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top