Newsgroup: it.comp.appl.access
Titolo: analisi e conteggio

Come al solito non ci arrivo da solo :(
 
in una tabella "incarichi" ho una serie di nominativi e i relativi 
periodi di incarico (on e off) dal 2013 ad oggi; ovviamente i nominativi 
sono individuati in maniera univoca nella tabella collegata anagrafica.
 
Vorrei individuare, anno per anno,
- quali sono i nominativi che non hanno avuto incarichi nell'anno 
precedente;
- quali sono quelli non hanno avuto incarichi l'anno successivo;
- contare i nominativi di entrambe le categorie.
 
Come imposto la query, per favore?
 
Grazie molte in anticipo
-- 
Stefano


senza conoscere la struttura della tabella iniziale puoi provare a 
visualizzare le informazioni con una query a campi incrociati
 
TRANSFORM Count(incarichi.incarico) AS ConteggioDiincarico
SELECT incarichi.nominativo
FROM incarichi
WHERE (((incarichi.incarico)=Yes))
GROUP BY incarichi.nominativo
PIVOT incarichi.anno;
 
la condizione where si/no la scegli in base alla tua esigenza, ho 
impostato anno come un campo numerico.
 
Akery
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

 impostato anno come un campo numerico.
 
 
Grazie infinite.
Cambiate le cose da cambiare, la query appare così:
 
TRANSFORM Count(Imbarchi.ID) AS ConteggioDiID
SELECT Imbarchi.Surname, Count(Imbarchi.ID) AS [Totale di ID]
FROM Imbarchi INNER JOIN Anagrafica ON Imbarchi.Surname=Anagrafica.ID
WHERE (((Imbarchi.from) =yes))
GROUP BY Imbarchi.Surname, Anagrafica.Surname, Anagrafica.Name
PIVOT Imbarchi.from;
 
Che mi restituisce un errore per troppe colonne.
 
Un'alternativa di ragionamento potrebbe essere query di confronto anno per anno?
 
Grazie ancora
-- 
Stefano


prova così:
 
TRANSFORM Count(Imbarchi.ID) AS ConteggioDiID
SELECT Imbarchi.Surname, Count(Imbarchi.ID) AS [Totale di ID]
FROM Imbarchi INNER JOIN Anagrafica ON Imbarchi.ID = Anagrafica.id
WHERE (((Imbarchi.from)=Yes))
GROUP BY Imbarchi.Surname, Anagrafica.Surname, Anagrafica.Name
PIVOT Imbarchi.from;
 
altrimenti crea un numero minimo di dati fittizi (con attributi) per 
capirci qualcosa in più


 capirci qualcosa in piùuhm... ho provato a ridurre la tabella Imbarchi due soli anni (poco più 
di 700 records) ma la risposta è stata la stessa.
Grazie ancora.
-- 
Stefano
 


provato ad invertire righe con colonne?


 provato ad invertire righe con colonne?
certo che si, ma non riesco ad individuare la corretta trasformazione: 
il messaggio di errore è: "Per creare una query a campi incrociati, è 
necessario specificare una o più opzioni Intestazione riga, un'opzione 
Intestazione colonna e un'opzione Valore."
 
L'eccessivo numero di colonne credo sia dovuta al fatto che nelle 
colonne Access inserisce TUTTE le date di imbarco di TUTTI i marittimi, 
inserendo 1 dov'è il caso e facendo la somma alla fine della riga, 
costruendo insomma un'enorme tabella (fondamentalmente vuota) che 
incorre nei limiti del programma. Anche se riuscissi a invertire 
correttamente righe con le colonne, i nominativi (nelle colonne) 
superano di certo i 254 (che immagino sia il limite).
 
Sarebbe quindi bello avere la maniera di inserire nelle colonne le date 
di imbarco raggruppate per anno, ma non credo si possa fare in una sola 
query, giusto?
 
grazie ancora
-- 
Stefano
 


mi dispiace non saprei risponderti, lascio che siano gli esperti a 
proseguire
Akery


 > 
 
NON sono un esperto, ma un' aggiunta la posso fare
(riprendendo i dubbi dichiarati)
 
Per prima cosa (proprio perchè NON sono un esperto)
nelle compilazioni delle query a campi incrociati
mi lascio guidare dall'interfaccia grafica della composizione query (QBE)
e qui si trova appunto la dicitura "campi incrociati"
che fa apparire "intestazione riga" (ammesse più intestazioni righe),
"intestazione colonna", "valore" (ammesso solo una intestazione colonna e un valore)
 
poi
-trovo strana la scelta di NON far corrispondere la lista dei campi raggruppati (GROUP) alla lista delle intestazioni riga (SELECT): se, per ovvia necessità di calcolo del valore, il raggruppamento è fatto su più campi, questi poi "devono" essere tutti visibili 
 
-con il limite di 255 colonne non si può pensare di avere tante colonne quanti sono TUTTI i singoli giorni di un anno ...
 
per cui puoi impostare una selezione (diciamo) semestrale
 
ma si può anche impostare come Pivot (il "valore") la formula: Year([data]) & "/" & Month([data])
E' solo un esempio ! (occorre scrivere meglio la formula, sarà necessario aggiungere uno 0 ai mesi da 1 a 9 per vederli ben in ordine, e comunque dopo 20 anni si avranno 240 colonne ...)
 
infine 
per come esponi la cosa appare che tu non abbia esigenze particolari nè di  aspetto visivo finale della query e nè di preparazione dei criteri che limitano la selezione delle date (solo consultazione personale della query ?, se la devi "consegnare" qualcosa a riguardo va fatto ...)

 per come esponi la cosa appare che tu non abbia esigenze particolari nè di > aspetto visivo finale della> query...
E' così, almeno in relazione a questa query. Ottenuto il numero di 
imbarchi per persona per anno, dovrei stabilire le percentuali di 
continuità anno per anno, vale a dire (in relazione al numero di 
imbarchi) quanti nominativi hanno cambiato compagnia e hanno dovuto 
essere sostituiti. Pensavo di esportare i dati query in Excel e 
graficare i dati da lì. Immagino sia possibile farlo anche in Access, ma 
la vedo dura, partirei da zero...
 
Grazie di nuovo davvero per i suggerimenti e le spiegazioni.
 
ciao
-- 
Stefano
 

 
 
 
se l'utilizzo è "in proprio" E è sufficiente il conteggio per anno 
c'è la possibilità di creare una tabella con la query a campi incrociati: 
 
è semplice, basta creare una nuova query, inserire come origine la query a campi incrociati, selezionare tutto (asterisco) e imporre, appunto, query di creazione tabella. 
 
La query di creazione tabella SOVRASCRIVE SEMPRE, per cui la tabella è sempre aggiornata, e rimane sempre lo stesso nome. 
A questo punto, per la parte calcoli di confronto, occorre preparare una nuova query (origine dati: la tabella) e inserire, anno dopo anno, i campi calcolati necessari 
ad esempio: [2014]/[Totale di ID] e sceglier la formattazione percentuale 
oppure fare un calcolo che, di fatto, restituisce una percentuale 
 
Per quanto riguarda il grafico: non ne ho mai consegnati (in casi di tabelle riassuntive è stato sufficiente dare la possibilità di più ordinamenti a piacere) ma penso ci trovino buoni esempi 
 
Precisazioni: 
-se mantieni l'anno come valore Pivot il nome campo nella tabella creata è "un numero" e per utilizzarlo (campi calcolati ...) è bene inserirlo fra parentesi quadre. 
-ci sarà (quasi) certamente l'inghippo dei valori nulli (valori non presenti, ma che poi vengono ripresi dai campi calcolati). 
Quando mi è capitato ho aggirato in questo modo, allo scopo di far apparire SUBITO il valore zero (nella query a campi incrociati): 
 
TRANSFORM nz(Count(Imbarchi.[ID])) + 0 AS ConteggioDiID 
 

 se l'utilizzo è "in proprio" E è sufficiente il conteggio per anno...
Fantastico, grazie infinite. Più tardi ci rimesto e sicuramente ti 
faccio sapere.
 
Grazie ancora
-- 
Stefano