Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    problema con una query incasinata (Access)

    Ciao a tutti, dovrei "trasferire" dei dati presenti in una tabella con questa struttura


    datapagamento - raggruppamento - fornitore - importo
    01/01/2005 - Fatt Att - 001 - 15000
    10/05/2005 - Fatt Att - 002 - 100
    05/08/2005 - Nota - 001 - 3000
    10/07/2005 - Fatt Pass - 4000

    (praticamente: data documento, raggruppamento tipo documento, fornitore ed importo)

    in una tabella con questa struttura.

    raggruppamento - fornitore - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 -11 - 12 - Totale


    Praticamente quello che vorrei ottenere, possibilmente con una query, è una visualizzazione di questo tipo

    ordinamento per raggruppamento e fornitore
    (quindi visualizzando tutti i documenti di uno specifico tipo ed un raggruppamento per fornitore dei valori)

    Fatt Att - 001
    Fatt Att - 002
    Fatt Att - 003
    Fatt Pass - XXX
    Fatt Pass - YYY
    Nota - 004

    con in colonna la somma degli importi (somma per fornitore/raggruppamento) incolonnati nel mese di competenza (data)

    è un po' complicato da spiegare... spero di esserci riuscita!!

    heeeeeeeeeeeelp

    Grazie

  2. #2
    Mi è uscita così:

    codice:
     
    SELECT DISTINCT Table1.raggruppamento, Table1.fornitore,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=1 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 1,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=2 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 2,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=3 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 3,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=4 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 4,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=5 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 5,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=6 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 6,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=7 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 7,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=8 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 8,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=9 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 9,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=10 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 10,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=11 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 11,
    (SELECT Sum(tb1.importo) AS SumOfimporto
    FROM table1 as tb1
    where Month(tb1.datadocumento)=12 and tb1.fornitore = table1.fornitore and tb1.raggruppamento = table1.raggruppamento
    GROUP BY tb1.raggruppamento, tb1.fornitore, Month(tb1.datadocumento), tb1.raggruppamento) as 12
    FROM Table1
    group by Table1.raggruppamento, Table1.fornitore, month(datadocumento)
    Fammi sapere
    Ciao
    K
    Kalman

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da Kalman
    Mi è uscita così:

    codice:
     
    [...]

    Fammi sapere
    Ciao
    K
    VVoVe: VVoVe: VVoVe: ma non si potrebbe prendere tutti i dati e poi lavorare sul datatable/dataset?
    qual è piu conveniente? giocare con il datatable o spararsi un query di 120 righe ?

  4. #4
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Provo le due soluzioni indicate

    Grazie ad entrambi

  5. #5
    io non ho capito molto bene quale deve essere il risultato..
    xxx

  6. #6
    Originariamente inviato da sms
    VVoVe: VVoVe: VVoVe: ma non si potrebbe prendere tutti i dati e poi lavorare sul datatable/dataset?
    qual è piu conveniente? giocare con il datatable o spararsi un query di 120 righe ?

    Dipende... io sono sempre stato per far fare più lavoro "sporco" al database che alla pagina (o forse perchè sono abituato con SQL e ORACLE). Una volta fatta una query 1-10-100 righe è fatta ed il lavoro della pagina è minore.

    Ai posteri l'ardua sentenza!

    Ciao
    K
    Kalman

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da Kalman
    Dipende... io sono sempre stato per far fare più lavoro "sporco" al database che alla pagina (o forse perchè sono abituato con SQL e ORACLE). Una volta fatta una query 1-10-100 righe è fatta ed il lavoro della pagina è minore.

    Ai posteri l'ardua sentenza!

    Ciao
    K
    Utilizzo anch'io la stessa logica, però quando la stessa query deve essere eseguita più volte e, magari è molto esigente a livello di risorse, preferisco mettere nella cache un datatable e poi lavorare con quello.
    Ciao
    Legnetto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.