Question

J'ai un formulaire que les gens peuvent utiliser pour envoyer des e-mails à nos clients. L'utilisateur a une option pour sélectionner entre deux messages en conserve (message "1" ou message "2"). Dans les coulisses, chaque fois qu'ils appuyent sur le bouton "Envoyer", il se connecte dans une table "Enregistrements" (tant qu'il le fait via les gestionnaires d'erreurs).

Prétendons que le tableau des enregistrements a 2 colonnes:

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

J'ai besoin d'une requête qui compte celles et deux pour chaque cust_id. L'ensemble de résultats devrait donc ressembler à ceci:

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

J'ai utilisé le nombre, le groupe BYS, les cceaux, tandis que l'union, les sélections imbriquées, mais comme je l'ai dit, je complique probablement quelque chose qui est relativement facile.

Était-ce utile?

La solution

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

Autres conseils

Une autre option à considérer est d'utiliser une requête de pivot avec transformée

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;

Cela produirait cependant des têtes de colonne de CUST_ID , 1, et 2. Cependant, si vous aviez une autre table avec les types de messagerie, cela pourrait être utile (surtout si vous aviez un grand nombre de types de messagerie que 2)

Le SQL pourrait ressembler à ça

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;

Produire cette sortie

   CUST_ID | Work | Home 
   -------   ----   ----
   0000    | 3    | 1
   0001    | 0    | 1
   0002    | 2    | 0
   0003    | 0    | 3
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top