Domanda

Ho un modulo che le persone possono utilizzare per inviare e-mail ai nostri clienti.L'utente ha un'opzione per selezionare tra due messaggi in scatola (messaggio "1" o un messaggio "2").Dietro le quinte, ogni volta che colpiscono il pulsante "Invia", accede a una tabella "Records" (fino a quando lo rende attraverso i gestori di errore).

Facciamo finta la tabella dei record ha 2 colonne:

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

Ho bisogno di una query che conta quelle e due per ogni cust_id.Quindi il set di risultati dovrebbe essere simile a questo:

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

Ho usato il conteggio, il gruppo Bys, Haves, mentre, unione, si seleziona, ma come ho detto, probabilmente sto complicando qualcosa che è relativamente facile.

È stato utile?

Soluzione

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
.

Altri suggerimenti

Un'altra opzione da considerare è utilizzare una query per pivot con trasformazione

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;
.

Ciò produrrebbe tuttavia teste di colonna di generatori CUST_ID, 1 e 2.Tuttavia, se hai avuto un altro tavolo con i tipi di posta elettronica, potrebbe essere utile (specialmente se avessi un gran numero di tipi di posta elettronica di 2)

L'SQL potrebbe assomigliare a questo

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;
.

Produzione di questa uscita

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top