in

UGISS Community

Il sito della community dello User Group Italiano di SQL Server

pivot

Last post 08-26-2008 18.13 by colonnis. 2 replies.
Page 1 of 1 (3 items)
Sort Posts: Previous Next
  • 08-08-2008 15.26

    • colonnis
    • Top 150 Contributor
    • Joined on 08-08-2008
    • Posts 2
    • Points 25

    pivot

    salve,

    sono in fase di trasformazione della mia procedura da access a sqlserver2005. in access funzionava una query

    TRANSFORM Sum(Fatturato) AS [Totale] SELECT MC_CODCLIFOR, Sum(Fatturato) AS Totale FROM Estrazione_Dati_Statistica_Clienti_Confronto WHERE MC_DATABILANCIO BETWEEN #01/01/2008# AND #12/31/2008# GROUP BY MC_CODCLIFOR PIVOT Format(MC_DataBilancio , 'yyyy mm');

    che serve per estrarre il fatturato per anno/mese

    dove Estrazione_Dati_Statistica_Clienti_Confronto è :

    SELECT DISTINCTROW TMOVCON.MC_DataBilancio, TMOVCON.MC_CodCliFor, ARCCLI.AC_AGE, ARCCLI.AC_PRO, ARCCLI.AC_CATEGORIA, ARCCLI.AC_ZONA, Sum((RCONTABGIOR.ImportoDare+RCONTABGIOR.ImportoAvere)*IIf(CAUCONTAB.CC_TIPOIVA=2 Or CAUCONTAB.CC_TIPOIVA=8,-1,1)) AS Fatturato
    FROM ((CAUCONTAB INNER JOIN TMOVCON ON CAUCONTAB.CC_CODICE = TMOVCON.MC_Causale) INNER JOIN (ANAPCONTI INNER JOIN RCONTABGIOR ON ANAPCONTI.PC_CODICECONTO = RCONTABGIOR.Conto) ON TMOVCON.IdRegistrazione = RCONTABGIOR.IdRegistrazione) INNER JOIN ARCCLI ON (TMOVCON.MC_TipoCliFor = ARCCLI.AC_LETTERA) AND (TMOVCON.MC_CodCliFor = ARCCLI.AC_COD)
    WHERE (((ANAPCONTI.PC_OKSTATISTI)=True) AND ((CAUCONTAB.CC_TIPOIVA) In (1,2,5,6,7,8))) AND ARCCLI.AC_OKSTAT=TRUE
    GROUP BY TMOVCON.MC_DataBilancio, TMOVCON.MC_CodCliFor, ARCCLI.AC_AGE, ARCCLI.AC_PRO, ARCCLI.AC_CATEGORIA, ARCCLI.AC_ZONA;

    in sqlserver 2005 non funziona più e non so come fare.

    qualcuno può aiutarmi? grazie, sandro

    • Post Points: 20
  • 08-09-2008 8.36 In reply to

    Re: pivot

     Ciao Sandro,

     purtroppo non ho buone notizie per te... Crying

    1. il formato sql generato da access non è direttamente eseguibile in Microsoft SQL (e quello che hai sottomano è  solo un esempio)

    2. in SQL Server 2005 esiste la possibilità di fare una query pivot, ma esiste una sostanziale limitazione rispetto a quanto puoi fare con access: devi conoscere in anticipo il numero ed il nome delle colonne pivotate che vuoi ottenere... ciò siginifica che, per ipotesi, ogni mese dovresti rimaneggiare la tua query per aggiungere una colonna contenente i risultati del mese appena trascorso...

     esiste in realtà una soluzione al problema evidenziato al punto 2: devi scrivere una procedura che componga a runtime l'sql da eseguire ed eseguirlo quindi con un comando EXEC...

     

    comunque qui trovi aiuto sulla sintassi del comando PIVOT

    http://msdn.microsoft.com/it-it/library/ms177634.aspx

     

    in ogni caso preparati a dover rimaneggiare quasi tutte le tue query access, se devi passarle a SQL Server...

     

    Ciao

    Mauro

     

     

     

     

     

     

     

    • Post Points: 20
  • 08-26-2008 18.13 In reply to

    • colonnis
    • Top 150 Contributor
    • Joined on 08-08-2008
    • Posts 2
    • Points 25

    Re: pivot

    ok mauro, ti ringrazio comunque.

    penso che dovrò cercare un'altra soluzione

    • Post Points: 5
Page 1 of 1 (3 items)
(C) 2007 User Group Italiano di SQL Server