simo27 ha scritto:
Buon giorno a tutti
Ho questo problema.
Ho creato su una tabella di scadenze dei miei fornitori una query a campi incrociati dove su ogni riga vedo le date di scadenze delle fatture ripartite per mesi
Quindi ho diverse colonne (gen - feb - marz...ecc.)
Il mio problema è che anche le date di scadenza di fatture dell'anno passato (es.31/12/14) vengono ovviamente classificate nella colonna di dicembre mischiate con quelle del 2015...
Questa è la proposta di soluzione con query a campi incrociati (ma solo perché era questa la tua richiesta iniziale e perché ero curioso di provare, continuo a suggerire la strada alla mashera / report)
Il tutto si basa su questo ragionamento: "divido" la tabella di partenza in due, per poter agire sul campo "Data di scadenza" e trasformarlo in valori che poi saranno gestiti dalla query a campi incrociati.
SELECT
[Scadenze fornitori aperte].Protocollo, [Scadenze fornitori aperte].[Num fattura],
[Scadenze fornitori aperte].[Data fattura], [Scadenze fornitori aperte].Totfatt,
[Scadenze fornitori aperte].Società, [Scadenze fornitori aperte].[Data scadenza],
[Scadenze fornitori aperte].[Tipo pagamento],
Format([Scadenze fornitori aperte].[Data scadenza],"mmm") As DtScad,
[Scadenze fornitori aperte].[Importo da pagare]
WHERE [Scadenze fornitori aperte].[Data scadenza] BETWEEN #01/01/2015# AND #12/31/2015#
UNION
SELECT
[Scadenze fornitori aperte].Protocollo, [Scadenze fornitori aperte].[Num fattura],
[Scadenze fornitori aperte].[Data fattura], [Scadenze fornitori aperte].Totfatt,
[Scadenze fornitori aperte].Società, [Scadenze fornitori aperte].[Data scadenza],
[Scadenze fornitori aperte].[Tipo pagamento],
"AnniPrecedenti" As DtScad,
[Scadenze fornitori aperte].[Importo da pagare]
WHERE [Scadenze fornitori aperte].[Data scadenza] < #01/01/2015#
Questa query nella colonna DtScad mette "gen", "feb", ... "dic" per quello che scade nel 2015, "AnniPrecedenti" per tutto quello che è ante 01/01/2015.
Su questa poi si crea la query a campi incrociati.
TRANSFORM Sum([Q1].[Importo da pagare]) AS [TotDaPagare]
SELECT [Q1].[Protocollo], [Q1].[Num fattura], [Q1].[Data fattura],
[Q1].Totfatt, [Q1].Società, [Q1].[Tipo pagamento], [Q1].[DtScad],
Sum([Q1].[Importo da pagare]) AS TotDaPagare
FROM ( ... vedi query precedente ... ) AS Q1
GROUP BY [Q1].[Protocollo], [Q1].[Num fattura], [Q1].[Data fattura], [Q1].Totfatt, [Q1].Società, [Q1].[Data scadenza], [Q1].[Tipo pagamento]
PIVOT [T1].[DtScad]
Ma... raggruppa a sufficienza?
Comunque la parte più importante è quella precedente, quella della UNION query. La strada è tracciata, ora si può solo migliorare (o cambiare del tutto, in maschera o report)