Query estrazione penultimo valore

di Anonimizzato20645 il
8 risposte
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

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

    Quello che cerchi sarà sempre nel secondo record
  • 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
  • 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
  • Tutto dipende dalla WHERE opportuna come suggerito da oregon ....
    Ovvero, senza WHERE ottieni il penultimo record per tutti i pazienti
  • 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
  • Grazie ad entrambi
  • 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.
  • @alex, GRAZIE , quello che hai detto corrisponde alla mia richiesta.
    Grazie anche a te
Devi accedere o registrarti per scrivere nel forum
8 risposte