Newsgroup: it.comp.appl.access
Titolo: Ottenere con query il conteggio di "stati" e visualizzarli su più colonne

Ciao a tutti
(non trovavo un oggetto migliore)
Io devo mostrare delle statistiche in una maschera .
Quindi per ogni nome presente nella tabella nomi devo mostrare
i vari stati delle telefonate per es.
TABELLA TEL
Contatore  nome stato_Telefonata        Talefonata presa
1                  gianni           O
2                  gianni           L
3                  gianni                                         V
4                  gianni           O
5               manuela                                         V
6              manuela           L
7              manuela           O
8              Automatic                                        V
8              Automatic        O
8              Automatic         L
......
TABELLA NOMI
Contatore        Nome   .......
1                     Gianni
2                    Manuela
Maschera che voglio, o meglio, devo ottenere
Nome     occupati     liberi   tel_prese  Lav_svolto (rispetto ad avg)
gianni       3                 3            85               -25%
manuela   4                             222              +85%
e via discorrendo.
Io conosco tutti i dati, so se la telefonata è libera perchè c'è una L se la
chiamata è libera .....
Il problema è:
Come fare a mostrare tutto in una maschera e poi in un report?
Incasinandomi un po' ho fatto 3 query; una per sapere le tel libere, una per
sapere le occupate
una per le tel prese e poi facendo un right join ho "tirato fuori" i dati
che mi servivano.
Per il calcolo della percentuale devo utilizzare un'altra query con avg! Ma
mi sembra una stupidaggine fare tutto sto giro.
Chi mi può dare una mano con questo bruttissimo problema?
Grazie a tutti
TT

 ha scritto nel messaggio
news:ixpgc.8577$Qc.3...@twister1.libero.it...

Na bella qry a campi incrociati?
SunRex

 ha scritto nel messaggio
news:DIrgc.95964$rM4.3...@news4.tin.it...

Grazie per la risposta.
Comincio subito con dire che non so come si utilizzano le query a campi
incrociati, cioè buio totale. Ho fatto delle prove, dopo svariate ho notato
che:
- non accetta
DataIns Between forms.mStat.DaData And forms.mStat.AData
- se, per esempio, ci sono delle persone che non hanno trovato
O (stato occupato) la colonna viene ommessa.
-a me interessano solo alcuni stati delle telefonate non tutti, non l'ho
detto
prima non sono solo O o L.
-Non sono MAI riuscito ad inserire campi calcolati, conteggi ....
Ciao
TT

TT ha scritto:


Era stata chiesta poco tempo fa una cosa simile, prova a vedere se ti può
essere utile questa risposta:
http://www.google.it/groups?q=esami+group:it.comp.appl.access+author:namor
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

[cut]
Ciao,
sono andato sul sitocomune dove ho trovato un
esempio di Roberto dal quale sono riuscito ad estrarre 3
delle 6 colonne che mi servono utilizzando:
TRANSFORM Count(*) as Tot
SELECT Nome, Count(*) as Chiamate
FROM Tabella
WHERE  .....
GROUP BY Nome
PIVOT STATO IN ("S","R");
Poi ho dato un'occhiata al 3d che mi hai suggerito. Leggendo sembrava
potesse
andare ma con
SELECT Nome, Count(*) AS Tot,
Count(IIf([STATO]=Chr(82),1,0)) AS R,
Count(IIf([STATUS]=Chr(83),1,0)) AS S
FROM Tabella
WHERE .....
GROUP BY Nome;
Il totale è corretto, i due conteggi sono uguali al totale.
Qui mi son fermato, è inutile andare avanti con i
conteggi se già ai primi 2 è sbagliato.

[cut]
Ciao, grazie per la risposta,





Dove sbaglio?
Ciao
TT

 GROUP BY Nome;
invece di
SELECT Nome, Count(*) AS Tot,
Sum(IIf([STATO]=Chr(82),1,0)) AS R,
Sum(IIf([STATO]=Chr(83),1,0)) AS S
FROM Tabella
WHERE .....
GROUP BY Nome;
Fatto ciò salta fuori un'altro problema.
In un'altra colonna della stessa tabella ho "resp",
il nome contenuto nel record di questa colonna esiste in Nomi.
Voglio inserire nella query soprastante il numero di volte che
compare il nome in questa colonna.
Faccio un esempio, se nella colonna resp il nome pippo
compare 10 volte,indipendentemente da quello che c'è in nomi,
voglio che a fianco del nome pippo venga visualizzato 10.
Nome    Tot   R   S   resp
pippo     23    4    3    10
Grazie
TT

TT ha scritto:




Non ho capito bene la situazione.
Comunque il conteggio lo puoi fare con lo stesso metodo
Sum(IIf([resp]=[nome],1,0))
o con Dcount("campo","tabella","nome=""pippo""")



Ciao
Ho capito cosa ti manca. Non è detto che al record 12 (esempio)
ci sia il nome e ci sia anche resp, come supponi tu.
Potrebbe darsi, e la maggior parte delle volte è così, che al record 12
e alla colonna resp ci sia pippo e che nella colonna nome ci sia 'Null'
usando Sum(IIf([resp]=[nome],1,0)) sommo soltanto quelli che hanno
nome e resp uguali (che potrebbe essere ma non è detto) e mi perdo
gli altri.
Io voglio sapere invece quante volte pippo è comparso nella colonna
resp indifferentemente che ci sia pippo, pluto, gigi nella colonna name.
Il problema è che ho le funz di aggregazione e sono raggruppato per
nome e devo usare un'altra aggregazione e raggrupparla per qualcosa
(resp) che non è nome.
Teniamo l'ottima la soluzione:
SELECT Nome, Count(*) AS Tot,
Sum(IIf([STATO]=Chr(82),1,0)) AS R,
Sum(IIf([STATO]=Chr(83),1,0)) AS S
FROM Tabella
WHERE .....
GROUP BY Nome;
a questa devo aggiongere il campo resp; fai conto di dover "fondere"
i risultati della query sopra con
select resp, count(*) as Num
from tabella
where ...
group by resp;
e poi devo fare
*******
WHERE  resp=Nome      oppure  WHERE resp IN(*****)
GROUP BY Nome;
Il problema è che non so cosa scrivere la posto di *
Comunque grazie per la genialata, avevo perso 2 giorni senza
risolvere nulla.
Ciao
TT

 TT
Prova
  Conteggio: Dcount("[resp]","tabella","nome=""pippo""")
o
  Conteggio: Dcount("[resp]","tabella","nome=""" & [nome campo] & """")


 ha scritto nel messaggio
news:c6569d$brn$1...@news.newsland.it...

Ciao, grazie per la risposta.
La seconda soluzione è quella che mi serve.
Ciao
TT