Query a campi incrociati con più intestazioni colonne.

di il
5 risposte

Query a campi incrociati con più intestazioni colonne.

Buonasera a tutti, torno a infastidire gli utenti di questo forum con un nuovo problema che mi attanaglia da giorni.
Dopo aver risolto con successo quanto richiesto qui: [link]https://www.iprogrammatori.it/forum-programmazione/access/visualizzare-mese-predefinito-due-anni-differenti-t37558.html[/link]
Ora dovrei mettere a confronto totali di diversi anni di diverse famiglie di prodotto suddivise per fornitore.
Praticamente una cosa del genere che riesco a fare con una query di selezione prendendo i dati da 2 query a campi incrociati
IMG_20190121_160658.jpg
IMG_20190121_160658.jpg

Nel codice SQL parto scrivendo questo:

TRANSFORM Sum(ORDINI.NETTO) AS SommaDiNETTO
SELECT ORDINI.FTC
FROM ORDINI
INNER JOIN FAMIGLIE ON ORDINI.FAMIGLIA = FAMIGLIE.FAMIGLIA
GROUP BY ORDINI.FTC
PIVOT ORDINI.FAMIGLIA
E mi restituisce una query come quella nell'immagine ma ovviamente solo con il totale senza dividerlo per anno.
So come visualizzare un anno specifico con la condizione WHERE, ma a me servirebbe mettere a confronto due anni diversi.
Spero di essere stato chiaro nella spiegazione. Grazie in anticipo a tutti.

5 Risposte

  • Re: Query a campi incrociati con più intestazioni colonne.

    Se aggiungi ai campi che hai selezionato anche un Campo Cacolato con Year(CampoData) su cui applicherai un RAGGRUPPAMENTO...?
  • Re: Query a campi incrociati con più intestazioni colonne.

    @Alex ha scritto:


    Se aggiungi ai campi che hai selezionato anche un Campo Cacolato con Year(CampoData) su cui applicherai un RAGGRUPPAMENTO...?
    Riusciresti a spiegarti meglio? Non sono espertissimo di VBA e non saprei come raggruppare sia per ftc che per year(data). Grazie.
  • Re: Query a campi incrociati con più intestazioni colonne.

    Non è VBA ma devi semplicemente aprire il QBE(Queries Builder) e fare esattamente le 2 cose che ho detto... Non saprei proprio come essere più preciso...
    Fai una.prova in una query semplice non morde...
    Aggiungi un campo calcolato con la funzione year(campodata) che ricavi l'anno... se apri una query vedi.come funziona.
    Se questo campo lo aggiungi ai campi disponibili nella query ravgruppata devi definire il tipo di aggregazione... Raggruppa
  • Re: Query a campi incrociati con più intestazioni colonne.

    @Alex ha scritto:


    Non è VBA ma devi semplicemente aprire il QBE(Queries Builder) e fare esattamente le 2 cose che ho detto... Non saprei proprio come essere più preciso...
    Fai una.prova in una query semplice non morde...
    Aggiungi un campo calcolato con la funzione year(campodata) che ricavi l'anno... se apri una query vedi.come funziona.
    Se questo campo lo aggiungi ai campi disponibili nella query ravgruppata devi definire il tipo di aggregazione... Raggruppa
    Come ho detto nel primo post dove ho postato l'immagine, con QBE avevo già creato una query di selezione dove fondevo due query a campi incrociati, ma volevo rendere la cosa più automatica.
    Con il metodo che mi hai detto, il confronto tra gli anni mi viene fatto tra le righe dove avviene il raggruppamento, mentre io volevo avere il confronto nelle colonne come quando usi le query a campi incrociati.
    Non so se si possono dare più clausole PIVOT per poter fare quello che mi serve...
  • Re: Query a campi incrociati con più intestazioni colonne.

    Visto che indichi di impiegare due query a campi incrociati, fra loro correlate (ma di cui non conosciamo il contenuto elaborato) per ottenere i dati in colonna, suddivisi nei vari anni, come ti è stato già indicato, devi porre nella interfaccia QBE, ad esempio:
    - Formula = Raggruppamento
    - Campi incrociati = intestazione colonna
    - Campo = Format([TuaData],"yyyy")
    E' chiaro che l'incolonnamento annuale è legato al tipo di aggregazioni (realizzate nelle due query) e se sono necessarie delle ulteriori suddivisioni (all'interno dell'anno) queste devono essere poste nella pivot quale ulteriore elemento distintivo della colonna.
Devi accedere o registrarti per scrivere nel forum
5 risposte