|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10945
|
[SQL][Query Access] Query a campi incrociati (crosstab query) con celle blank
salve ho un problema con una query crosstab (ho access inglese, penso che in italiano sia la query a campi incrociati)
allora ho settato la riga, colonna e il valore (ho un database dove voglio sapere il numero di pratiche (valore) per ogni mese (colonna) e per ogni prestazione (riga) praticamente la matrice è cosi: ------------ Mese1 Mese2 Mese... MeseK prestazione1 N Pratiche N Pratiche prestazione2 prestazione... prestazioneN il problema è che mi esce una matrice che omette le colonne o righe vuote (ovvero è possibile che alcune righe o colonne non vengano inserite, se, ad esempio, per quel mese o per quella prestazione nn ci sono pratiche)...invece io vorrei che vangano inserite tutte le colonne e righe in modo da avere delle matrici di dimensioni costanti spero di essermi speigato...è molto piu difficile spieare la query che farla... Ultima modifica di Micene.1 : 15-06-2009 alle 18:10. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Se ho capito bene la tua query dovrebbe essere:
Codice:
SELECT prestazione, sum(iif(month(data)=1,1,0)) AS gennaio, sum(iif(month(data)=2,1,0)) AS febbraio, sum(iif(month(data)=3,1,0)) AS marzo, .......... FROM tabella GROUP BY prestazione; |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10945
|
le crosstab nn le so costruire in sql ma solo col costruttore di access (si usa il comando PIVOT)...cmq allego il codice
TRANSFORM Count(AA.Id_Pratica_Ps) AS CountOfId_Pratica_Ps SELECT AA.Tipo_Lavoro FROM AA GROUP BY AA.Tipo_Lavoro ORDER BY AA.Tipo_Lavoro PIVOT Format([Time],"yy mm"); access con le crosstab query mi richiede di inserire necessariamete un campo che funge da colonna una da riga e un campo che deve essere i valori che popolano la celle tipo cosi (esempio preso su uinternet giusto per far capire): ![]() ora le righe sono il campo tipo_lavoro le colonne il campo time (col format anni-mesi) i valori sono il count sul campo pratiche il fatto è che se nn cè l'intersezione (ovvero la cella dellamatrice èvuota perche nn ho pratiche in quel mese o nn ho pratiche per quel lavoro) mi viene omessa una colonna o una riga mentre io vorrei che fossero inserite (valorizzando a 0 o blank etc. le celle corrispondenti) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Mi spiace ma non sono pratico della griglia di access. La trovo molto "diseducativa".
Per visualizzare gli zeri mancanti nelle colonne ESISTENTI puoi fare così TRANSFORM nz(Count(AA.Id_Pratica_Ps),0) AS CountOfId_Pratica_Ps mentre per visualizzare tutti i mesi di uno solo specifico anno puoi usare la query che ti ho indicato, in cui aggiungerai nella clausola where l'anno di tuo interesse. Se invece vuoi visualizzare tutte le colonne mancanti in un range imprecisato che copre diversi anni, quello non è compito di un rdbms. E' un problema di reportistica e in quanto tale lo risolvi con un linguaggio di programmazione, nel tuo caso magari tramite vba. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10945
|
Quote:
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10945
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:09.





















