Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    SQL ordinare per data avendo 3 campi data (access)

    ho la tabella seguente:

    fatt. | scadenza1 | scadenza2 |
    01 . | 1/12/2016 | 3/12/2016 |
    02 . | 2/12/2016 | 4/12/2016 |

    e devo mostrare per ogni fattura una riga con il numero della fattura e della scadenza in questo modo:

    01 | 1/12/2016
    01 | 3/12/2016
    02 | 2/12/2016
    02 | 4/12/2016

    ci sono riuscito con una union:
    codice:
    sql =  "SELECT * FROM (select Fatt, scadenza1, null as scadenza2 from Test WHERE scadenza1<>'' "
    sql = sql & "union all select Fatt null as scadenza1, scadenza2 from Test WHERE scadenza2<>'' )"
    ma come faccio ad ordinarli per data in questo modo:

    01 | 1/12/2016
    02 | 2/12/2016
    01 | 3/12/2016
    02 | 4/12/2016

  2. #2
    in fondo aggiungi la ORDER BY

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    si ma order by scadenza ad esempio mi ordinerà solo per scadenza e non anche per scadenza2

  4. #4
    SELECT * FROM (
    select Fatt, scadenza1 AS Scadenza from Test WHERE scadenza1<>''
    union all
    select Fatt, scadenza2 AS Scadenza from Test WHERE scadenza2<>''
    ) AS TabX
    ORDER BY Fatt, Scadenza

    dai che era facile

  5. #5
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    C'è un problema però

    ad un certo punto, per capire qual'è la riga che si sta processando (quella conteggiata con scadenza1<>'' o l'altra, quella con scadenza2 <>'') faccio questo controllo:

    IF rec("Scadenza1") <>"" THEN
    var="1"
    END IF

    IF rec("Scadenza2") <>"" THEN
    var="2"
    END IF


    e con la select in quel modo non posso più farlo.

  6. #6
    SELECT * FROM (
    select Fatt, '1' as QualeScadenza, scadenza1 AS Scadenza from Test WHERE scadenza1<>''
    union all
    select Fatt, '2' as QualeScadenza, scadenza2 AS Scadenza from Test WHERE scadenza2<>''
    ) AS TabX
    ORDER BY Fatt, Scadenza

  7. #7
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Perfetto, funziona.

    se invece le scadenze invece di 2 fossero 3?
    ho provato a fare in questo modo ma c'è qualcosa che non va:
    codice:
    SELECT * FROM (
    
    select Fatt, '1' as QualeScadenza, scadenza1 AS Scadenza from Test WHERE scadenza1<>''
    
    union all 
    
    select Fatt, '2' as QualeScadenza, scadenza2 AS Scadenza from Test WHERE scadenza2<>''
    
    union all 
    
    select Fatt, '3' as QualeScadenza, scadenza3 AS Scadenza from Test WHERE scadenza3<>''
    
    ) AS TabX
    ORDER BY Fatt, Scadenza

  8. #8
    se c'è qualcosa che non va, ci sarà qualcosa di sbagliato

  9. #9
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    eh si

  10. #10
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    diciamo che devo aggiungere il campo scadenza3 e quindi passare da

    fatt. | scadenza1 | scadenza2 |

    01 . | 1/12/2016 | 3/12/2016 |
    02 . | 2/12/2016 | 4/12/2016 |

    a

    fatt. | scadenza1 | scadenza2 | scadenza3
    01 . | 1/12/2016 | 3/12/2016 | 10/12/2016
    02 . | 2/12/2016 | 4/12/2016 | 9/12/2016

    e vorrei avere questo risultato:

    01 | 1/12/2016
    02 | 2/12/2016
    01 | 3/12/2016
    02 | 4/12/2016
    02 | 9/12/2016
    01 |10/12/2016

    l'sql è:
    codice:
    sql =  "SELECT * FROM ( "
     
      sql = sql & " select  '1' as QualeScadenza, scadenza1 AS ScadenzaX, null as scadenza2, null as scadenza3 from GestioneFattureAcquisto WHERE scadenza1 IS NOT NULL "
    
    
     
      sql = sql & " union all select '2' as QualeScadenza, null as scadenza1, null as scadenza3, scadenza2 AS ScadenzaX from GestioneFattureAcquisto WHERE scadenza2 IS NOT NULL "
       
        sql = sql & " union all select '3' as QualeScadenza,  null as scadenza1, null as scadenza2, scadenza3 AS ScadenzaX from GestioneFattureAcquisto WHERE scadenza3 IS NOT NULL "
        
      sql = sql & " ) AS TabX ORDER BY ScadenzaX"


    i campi scadenza1, scadenza2 e scadeenza3 sono campi data

    e l'errore che ho è:

    Microsoft OLE DB Provider for ODBC Driverserror '80040e07'
    [Microsoft][Driver ODBC Microsoft Access] Tipi di dati non corrispondenti nell'espressione criterio.

    se stampo l'sql a schermo ho

    SELECT * FROM ( select '1' as QualeScadenza, scadenza1 AS ScadenzaX, null as scadenza2, null as scadenza3 from GestioneFattureAcquisto WHERE scadenza1 IS NOT NULL union all select '2' as QualeScadenza, null as scadenza1, null as scadenza3, scadenza2 AS ScadenzaX from GestioneFattureAcquisto WHERE scadenza2 IS NOT NULL union all select '3' as QualeScadenza, null as scadenza1, null as scadenza2, scadenza3 AS ScadenzaX from GestioneFattureAcquisto WHERE scadenza3 IS NOT NULL ) AS TabX ORDER BY ScadenzaX

    insomma, mi sto perdendo


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 © 2026 vBulletin Solutions, Inc. All rights reserved.