Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [SQL] Query nidificate

  1. #1

    [SQL] Query nidificate

    Ciao a tutti,

    Ho una tabella TAB1, con 2 campi:TIME_APPL e STATE.
    TIME_APPL contiene una data: 03-Apr-08 11:46
    STATE contiene la stringa 'IN' oppure la stringa 'OUT'

    Io devo selezionare questi 2 campi, in un certo range di date, ma ho bisogno che la query mi dia solo le righe con IN rimanenti da questa sottrazione: IN - OUT

    per esempio...ho 5 righe che hanno come STATE il valore 'IN', e 3 righe che hanno il valore 'OUT'...

    03-Apr-08 09:30 IN
    03-Apr-08 09:43 OUT
    03-Apr-08 10:08 IN
    03-Apr-08 11:00 OUT
    03-Apr-08 11:02 IN
    03-Apr-08 11:46 IN
    03-Apr-08 11:48 OUT
    03-Apr-08 11:50 IN

    il risultato che voglio ottenere dalla query è questo:

    03-Apr-08 11:46 IN
    03-Apr-08 11:50 IN

    ovvero le ultime 2 righe aventi come STATE 'IN'...

    come posso fare??

    la query che usavo x il range di date è questa (che è corretta):

    select TIME_APPL, STATE from APPL_42600ACD_2004_0F where
    (to_date(TIME_APPL,'DD-MON-YY hh24:mi')) between
    (to_date('03/04/2008 11:46:00','DD/MM/YYYY hh24:mi:ss'))
    and (to_date('03/04/2008 11:56:00','DD/MM/YYYY hh24:mi:ss'))
    order by TIME_APPL

  2. #2
    mmm non ho capito...

    cos'è che ti impedisce di aggiungere AND STATE = 'IN' alla clausola where?

  3. #3
    mettendo AND STATE = 'IN' mi tira su tutte le righe aventi 'IN' come valore di STATE...

    a me serve prendere solo le righe con valore 'IN' rimanenti da questa sottrazione:
    (numero degli IN) - (numero degli OUT)

    nell'esempio dei valori ke ho messo, a me serve avere come risultato le ultime 2 righe con IN:

    03-Apr-08 09:30 IN
    03-Apr-08 09:43 OUT
    03-Apr-08 10:08 IN
    03-Apr-08 11:00 OUT
    03-Apr-08 11:02 IN
    03-Apr-08 11:46 IN <-- questa
    03-Apr-08 11:48 OUT
    03-Apr-08 11:50 IN <-- questa

  4. #4
    penso che tu dovrai avere anche una colonna indentifica chi è entrato e uscito, immagino un ip.
    Supponiamo che questa colonna si chiami "ip" potresti fare qualcosa del genere

    select count(*) as contatti from tabella group by ip;

    per ciascun ip avrai il numero di contatti che, se è ancora IN, dovrà essere dispari, altrimenti pari.

    ciao
    sergio

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