values form array ms-access count group-by union having

ms-access - array - javascript get form values



Contar el tipo de correo electrónico por ID de cliente (2)

Otra opción a considerar es usar una consulta dinámica 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;

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

El SQL podría verse así

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

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 escena, cada vez que presionan el botón "ENVIAR" se registran en una tabla de "REGISTROS" (siempre que lo haga a través de los manejadores de errores).

Supongamos que la tabla RECORDS 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 cuente los uno y los dos para cada CUST_ID. Entonces, el conjunto de resultados debería verse más o menos así:

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

He usado count, group bys, havings, while, union, selects anidados, pero como he dicho, probablemente estoy complicando algo que es relativamente fácil.


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