Query estrazione penultimo valore

di il
8 risposte

Query estrazione penultimo valore

Buongiorno a tutti,
sono in difficoltà. Ho la seguente situazione:
tabella 1: id_pazienti, data_visita
ogni paziente a 3 o più visite.

Devo, tramite query, ricavare la penultima data della visita. (sull'ultima no problem)

Come posso fare?
Grazie millle

8 Risposte

  • Re: Query estrazione penultimo valore

    Usa la TOP 2 nella SELECT e ordina per data_visita in senso DESC

    Quello che cerchi sarà sempre nel secondo record
  • Re: Query estrazione penultimo valore

    Ovvero anche qualcosa del genere

    SELECT TOP 1 *
    FROM
    (
    SELECT TOP 2 *
    FROM Tabella1
    ORDER BY data DESC
    )
    ORDER BY data ASC

    Ovviamente con la WHERE opportuna
  • Re: Query estrazione penultimo valore

    Grazie per il suggerimento, ma così non trovo solo la penultima di un paziente?
    Invece io ho più pazienti con più visite e per tutti devo trovare la penultima.
    Grazie
  • Re: Query estrazione penultimo valore

    Tutto dipende dalla WHERE opportuna come suggerito da oregon ....
    Ovvero, senza WHERE ottieni il penultimo record per tutti i pazienti
  • Re: Query estrazione penultimo valore

    0056 ha scritto:


    Grazie per il suggerimento, ma così non trovo solo la penultima di un paziente?
    Invece io ho più pazienti con più visite e per tutti devo trovare la penultima.
    Grazie
    Confermo quanto detto prima sulla where che ti ha anche ricordato max

    È ovvio che devi filtrare l'id del paxiente
  • Re: Query estrazione penultimo valore

    Grazie ad entrambi
  • Re: Query estrazione penultimo valore

    oregon ha scritto:


    0056 ha scritto:


    Grazie per il suggerimento, ma così non trovo solo la penultima di un paziente?
    Invece io ho più pazienti con più visite e per tutti devo trovare la penultima.
    Grazie
    Confermo quanto detto prima sulla where che ti ha anche ricordato max

    È ovvio che devi filtrare l'id del paxiente
    Magari fraintendo... ma se dovesse estrarre l'ultimo record per "OGNI" paziente ad esempio ... una soluzione tipo questa pur con la WHERE opportuna non darebbe il risultato atteso... darebbe un risultato assoluto e non relativo.
    Esempio data una tabella Movimenti di PRODOTTI se volessi sapere il valore massimo per ogni prodotto... io proporrei una cosa simile...
    Select T1.Provenienza,MAXP.IdProdotto,MAXP.Massimo 
        From T1 
        RIGHT JOIN 
            (select IdProdotto, Max(Prezzo) as Massimo
             From T1
             Group By IdProdotto) AS MAXP 
        ON T1.IdProdotto=MAXP.IdProdotto AND T1.Prezzo=MAXP.Massimo
    
    Ovviamente a questa ipotesi serve ora modificare predicato esattamente come suggerito da Antonio... quindi sulla tabella derivata introdurre il TOP2 con ordinamento decrescente e poi Il TOP1...

    In ogni caso è un altro pezzo... di riflessione.
  • Re: Query estrazione penultimo valore

    @alex, GRAZIE , quello che hai detto corrisponde alla mia richiesta.
    Grazie anche a te
Devi accedere o registrarti per scrivere nel forum
8 risposte