Newsgroup: it.comp.appl.access
Titolo: Query a campi incorciati con piu' intestaz. colonna

Salve a tutti, ho questo problema riguardo ad una query di rendicontazione 
su una tabella contenente il tipo di lavoro eseguito mensilmente da ogni 
operatore.
 
La tabella infatti contiene l'Id dell'operatore, l'anno ed il mese ed i 31 
campi relativi ai giorni del mese.
 
Idoperatore, anno, mese, T1, T2, T3, T4, T5 ...
 
La mia query, che sto tentando di fare a campi incrociati, dovra' produrre 
un record per ogni diverso lavoro eseguito dal'operatrore, inserendo il 
valore di Mx nel rispettivo campo.
Cerco di fare un esempio: se l'operatore x ha eseguito a Marzo 2012 2 
lavori, di cui: 1 di tipo 'M' il giorno 2 per 5 ore, e l'altro di tipo 'C' 
il giorno 4 di 8 ore, dovrei avere questo risultato:
 
operatore, anno, mese, tipo, M1, M2, M3, M4, M5...
x, 2012, 3, M, 0, 5, 0, 0, 0,...
x, 2012, 3, C, 0, 0, 0, 8,0,...
 
Ho provato con query incrociate, ma la voce intestazione colonna (ne deve 
esistere una sola), non mi permette di avere il risultato (essendo 31 i 
campi).
 
Sto forse affogando in un bicchier d'acqua?
Dove sbaglio?
 
Grazie a chiunque potra' darmi una dritta.
 
Saluti
Marco67
 
 
 
 
 

Marco67 ha scritto:

Non mi è chiaro, nella tabella che hai descritto, dove metti il tipo M o
C. Hai solo un camp per giorno che conterrà, presumo, il valore. Come fai
a legarlo ai tipi?
Riccardo Baldinotti
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 ha scritto nel 
messaggio news:jmohjg$17n$1...@news.newsland.it...

Scusami, hai ragione:
nella stella tabella, ci sono 31 campi relativi al tipo di lavoro ed 
altrettanti relativi al num. ore lavorate, ovvero:
Idoperatore, anno, mese, T1, V1, T2, V2, T3, V3, T4, V4, T5, V5...
 
Scusami e Grazie 1000
Marco67


Marco67 ha scritto:

Allora, ho fatto:
- una Tabella1 contenente campi id (codice operatore), anno, mese e i
campi Ti, V1... T3, V3 (tu aggiungerai gli altri);
- una Tabella2 contenente id e nome (operatore)
Ho fatto la seguente query:
SELECT Tabella2.nome, Tabella1.anno, Tabella1.mese, "C" AS tipo,
Nz(DSum("[t1]","tabella1","[v1]='C'")) AS Espr1,
Nz(DSum("[t2]","tabella1","[v2]='C'")) AS Espr2,
Nz(DSum("[t3]","tabella1","[v3]='C'")) AS Espr3
FROM Tabella1 INNER JOIN Tabella2 ON Tabella1.ID = Tabella2.ID
WHERE (((Tabella1.ID)=1))
GROUP BY Tabella2.nome, Tabella1.anno, Tabella1.mese, "C"
UNION SELECT Tabella2.nome, Tabella1.anno, Tabella1.mese, "M" AS tipo,
Nz(DSum("[t1]","tabella1","[v1]='M'")) AS Espr1,
Nz(DSum("[t2]","tabella1","[v2]='M'")) AS Espr2,
Nz(DSum("[t3]","tabella1","[v3]='M'")) AS Espr3
FROM Tabella1 INNER JOIN Tabella2 ON Tabella1.ID = Tabella2.ID
WHERE (((Tabella1.ID)=1))
GROUP BY Tabella2.nome, Tabella1.anno, Tabella1.mese, "M";
cioè, unisco più query di raggruppamento per ogni tipo di lavoro, per
l'operatore id=1.
Mi sembra che il risultato sia quello che cerchi.
Aggiungerai una UNION SELECT per ogni tipo. Potresti fare tante QueryC,
QueryM, QueryB e poi scrivere:
SELECT * FROM QueryC, UNION SELECT * FROM QueryM UNION SELECT* FROM
QueryB...
Non ho trovato un metodo meno cervellotico. Magari uno dei tanti **davvero
bravi** di questo NG ci può aiutare.
Riccardo Baldinotti
 
-- 
