Newsgroup: it.comp.appl.access
Titolo: Query campi incrociati. intestazione riga con totale valori  di alcune colonne prescelte

 
Access 2003 / 2010
 
Ciao  e buone ferie  a tutti.
 
sapreste dirmi se in una query a campi incrociati dove viene
 mostrato il conteggio per colonna, esempio... colonna A, B, C, D,
  è possibile far sommare in intestazione di riga solo i valori
 delle colonne A e D.
 
Grazie, Bruno

 delle colonne A e D.
 
Dipende da come vengono create le colonne.
In principio in SQL sarebbe circa:
 
Sum(iif(CosaHaiNelPIVOT IN ("A","D"),[CampoConValore],0)) AS Pippo
 
Se non riesci, posta la stringa SQL della query.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

 ha scritto:

^^^^^
Ciao Karl, grazie per la disponibilit�. 
oggi ho provato richiamando la query a campi incrociati con
 colonne fisse da altra query; sommando poi i campi di mio
 interesse, ma cosi � un lavoro sporco. Ho il db a lavoro; domani
 mattina provo come da tue indicazioni, ma penso che avr� ancora
 bisogno di te.
Bruno
-- 

 -- 
 
^^^^^
 
Ciao Karl, come volevasi dimostrare non sono riuscito a far
 funzionare la tua formula. Ti posto l'sql della query a campi
 incrociati. Praticamente sono interessato alla somma di.
 
In("C n6","C m6","C p6","C s6") 
 
------
 
  TRANSFORM Count(tbl_141_Servizi.Mese) AS ConteggioDiMese SELECT
 tbl_141_Servizi.Anno, tbl_141_Servizi.Militare FROM
 (tbl_141_Servizi INNER JOIN tbl_141_Turni ON tb
l_141_Servizi.Turno = tbl_141_Turni.Id_Turno) INNER JOIN
 tbl_141_Militari ON tbl_141_Servizi.Id_Mil = tb
l_141_Militari.IdMil WHERE (((tbl_141_Servizi.Anno)=Year(Now())))
 GROUP BY tbl_141_Militari.N°_Ord, tbl_141_Servizi.Anno,
 tbl_141_Servizi.Id_Mil, tbl_141_Servizi.Militare ORDER BY
 tbl_141_Militari.N°_Ord PIVOT tbl_141_Turni.TurnoName In ("C
 n6","C m6","C p6","C s6","LO","LS");
-- 
 
Grazie, Bruno

 n6","C m6","C p6","C s6","LO","LS");
 
Prova cos�:
 
TRANSFORM Count(tbl_141_Servizi.Mese) AS ConteggioDiMese
SELECT  tbl_141_Servizi.Anno, tbl_141_Servizi.Militare,
 
Sum(iif(tbl_141_Turni.TurnoName IN ("C n6","C m6","C p6","C s6"),
 tbl_141_Servizi.Mese,0)) AS BellaSomma
 
FROM  (tbl_141_Servizi INNER JOIN tbl_141_Turni ON tb
l_141_Servizi.Turno = tbl_141_Turni.Id_Turno) INNER JOIN
 tbl_141_Militari ON tbl_141_Servizi.Id_Mil = tb
l_141_Militari.IdMil
WHERE (((tbl_141_Servizi.Anno)=Year(Now())))
GROUP BY tbl_141_Militari.N�_Ord, tbl_141_Servizi.Anno,
 tbl_141_Servizi.Id_Mil, tbl_141_Servizi.Militare
ORDER BY tbl_141_Militari.N�_Ord
PIVOT tbl_141_Turni.TurnoName In ("C n6","C m6","C p6","C s6","LO","LS");
 
-- 


 Access FAQ:  
http://www.donkarl.com/it
 
^^^^^^^
 
Buongiorno Karl, ho appena provato al tua stringa con i seguenti risultati:
 
La tua espressione funziona ma restituisce delle somme non coerenti co il 
numero dei turni conteggiati singolarmente nella query a campi incrociati In 
("C n6";"C m6";"C p6";"C s6"); non sono riuscito a capire da dove trae tali 
valori, anche perchè le colonne delle tipologie di servizio sono circa 40. 
Comunque funziona anche se calcola a suo modo.
 
BellaSomma: Somma(IIf([tbl_141_Turni].[TurnoName] In ("C n6";"C m6";"C 
p6";"C s6");[tbl_141_Servizi].[Mese];0))
 
 
L'espressione di seguito modificata da me (BellaSomma_1) funziona 
restituendo i valori corretti positivi utilizzando la funzione Abs(), mentre 
se escludo tale funzione restituisce i valori corretti ma in negativo, 
es, -7; mistero! non ho idea sul perchè, comunque funziona. Come avrai 
notato ho utilizzato la funzione NZ() in quanto le colonne con campi senza 
valore risultano vuoti e come ben sai potrebbero crearsi problemi di 
calcolo.
 
BellaSomma_1: Abs(Somma(Nz([tbl_141_Turni].[TurnoName];0) In ("C n6";"C 
m6";"C p6";"C s6")))
 
Detto ciò, ti ringrazio infinitamente per l'aiuto datomi.
Se vuoi, è gradita una tua ultima analisi sul funzionamento delle due 
espressioni.
Ciao, bruno