Spero di non farvi sorridere per l'ingenuità che può scaturire da queste mie convinzioni. Passo a dettagliare:
La query union aggancia campi provenienti da altre tabelle. In essa è possibile aggiungere anche nuovi campi ex novo.
Alcuni campi della mia query union (Q1), provengono da una tabella esistente. Per questi ho già provveduto, dalla tabella di provenienza, a farli nascere come "single". Essi conterranno cifre in euro fino al massimo di 9.000,00 euro, pensavo di fare economia di byte.
Altri campi ex novo (che più tardi entreranno in calcolo con i campi precedenti), dovranno essere ugualmente "single" proprio per non perdere l'arrotondamento dei cents a cui accennava Alex, ma purtroppo vengono inizializzati a “intero”.
C'è da dire anche che la union non accetta nella sintassi i punti, le parentesi, i punti esclamativi...
Una query di selezione successiva (Q2), mi farà il raggruppamento dei dati in funzione del campo “anno_contabile”.
Una terza query (Q_Crea_Tabella), mi produrrà una tabella finale “Movimenti_Raggruppati” su cui l’automatismo farà i suoi bravi calcoli numerici.
Tutto questo, anche se un po’ farraginoso, gira regolarmente e senza intoppi, ma succede che a causa dei campi “intero”, mi perdo i centesimi.
Per questo motivo, mi premeva assegnare il giusto tipo ai campi nascenti già in fase di creazione.
Dove, come, boh ????
--------------------------------------------------------------------------------
Query union (Q1)
SELECT Year([data_mov]) AS Anno_contabile, 0 as IMPEG_prec, Sum(Movimenti.entrata) AS E_5, 0 as E_spo, 0 as E_ass, 0 as E_quo, 0 as U_acc, 0 as U_spesa, Movimenti.canale
FROM Movimenti
GROUP BY Year([data_mov]), Movimenti.canale
HAVING (((Movimenti.canale)="5 x 1000"))
ORDER BY Year([data_mov])
UNION SELECT Year([data_mov]) AS Anno_contabile, 0 as IMPEG_prec, 0 as E_5, 0 as E_spo, 0 as E_ass, 0 as E_quo, Sum(Movimenti.acconto) as U_acc, Sum(Movimenti.spesa) as U_spesa, Movimenti.canale
FROM Movimenti
GROUP BY Year([data_mov]), Movimenti.canale;
------------------------------------------------------------------------
Query di selezione (Q2)
SELECT Q1.Anno_contabile, 0 AS NETTO_prec, 0 AS IMPEG_prec, 0 AS NETTO, 0 AS IMPEGNI, Sum(Q1.E_5) AS Tot_E_5, Sum(Q1.E_spo) AS Tot_E_Spo, Sum(Q1.E_ass) AS Tot_E_Ass, Sum(Q1.E_quo) AS ToT_E_Quo, 0 AS TOT_E, Sum(Q1.U_acc) AS Tot_acc, Sum(Q1.U_spesa) AS Tot_spesa
FROM Q1
GROUP BY Q1.Anno_contabile
ORDER BY Q1.Anno_contabile;
---------------------------------------------------------------------------------------
Query di creazione tabella (Q_Crea_Tabella)
SELECT Q2.*, * INTO Movimenti_Raggruppati
FROM Q2;