none
Estrazione dati in base alla differenza di data RRS feed

  • Domanda

  • salve ragazzi avre bisogno di una delucidazione per estrarre dati da una tabella gia ordinata x data e id in base alla data

    mi spiego meglio

    ho una tabella fatta in questo modo

    CREATE TABLE #USER_EVENT_IN_ORDERED(DATAEVENT DATETIME, IDUSER INT, FLAG BIT)

    la riempio con i dati

    INSERT #USER_EVENT_IN_ORDERED VALUES
    ('2014-04-09 15:19:46',1,0),
    ('2014-04-09 15:20:39',1,1),
    ('2014-04-09 15:19:54',2,0),
    ('2014-04-09 15:20:38',2,1),
    ('2014-04-09 15:20:07',7,0),
    ('2014-04-09 15:20:35',7,1),
    ('2014-04-09 15:20:14',9,0),
    ('2014-04-09 15:20:34',9,1),
    ('2014-04-09 15:30:58',13,1),
    ('2014-04-09 15:20:00',14,0),
    ('2014-04-09 15:20:36',14,1),
    ('2014-04-09 15:21:34',15,0),
    ('2014-04-09 15:21:49',15,1),
    ('2014-04-09 15:18:51',22,0),
    ('2014-04-09 15:20:44',22,1),
    ('2014-04-09 15:20:19',29,0),
    ('2014-04-09 15:20:32',29,1),
    ('2014-04-09 15:20:42',33,1),
    ('2014-04-09 15:19:03',103,0),
    ('2014-04-09 15:20:43',103,1),
    ('2014-04-09 15:19:40',20109,0),
    ('2014-04-09 15:20:40',20109,1),
    ('2014-04-09 15:29:42',20110,1),
    ('2014-04-09 15:30:28',20110,0),
    ('2014-04-09 15:29:55',20113,1),
    ('2014-04-09 15:30:41',20113,0)

    questo deve esere il risultato

    2014-04-09 15:20:39.000,1
    2014-04-09 15:20:38.000,2
    2014-04-09 15:20:35.000,7
    2014-04-09 15:20:34.000,9
    2014-04-09 15:30:58.000,13
    2014-04-09 15:20:36.000,14
    2014-04-09 15:21:49.000,15
    2014-04-09 15:20:44.000,22
    2014-04-09 15:20:32.000,29
    2014-04-09 15:20:42.000,33
    2014-04-09 15:20:43.000,103
    2014-04-09 15:20:40.000,20109

    ovverosia tutti i record con flag 1 se la data di questo id  è > dello stesso id ma con flag 0

    il flag rappresenta se il record è di entrata o di uscita.

    quindi mi interessano i record che risultano ancora all'interno

    spero di essere stato chiaro

    grazie a tutti 

    ciao GianPiero

    giovedì 10 aprile 2014 13:38

Risposte

  • Prova con questa

    SELECT Uscita.DATAEVENT, Uscita.IDUSER FROM
    (select DATAEVENT, IDUSER, FLAG FROM #USER_EVENT_IN_ORDERED where FLAG=1) AS Uscita 
    LEFT OUTER JOIN
    (select DATAEVENT, IDUSER, FLAG FROM #USER_EVENT_IN_ORDERED where FLAG=0) AS Entrata 
    ON Entrata.IDUSER=Uscita.IDUSER
    WHERE Uscita.DataEvent>ISNULL(Entrata.DataEvent,'1900-01-01 00:00:00')

    Ciao

    • Contrassegnato come risposta brggpr giovedì 10 aprile 2014 15:04
    giovedì 10 aprile 2014 14:36

Tutte le risposte

  • Prova con questa

    SELECT Uscita.DATAEVENT, Uscita.IDUSER FROM
    (select DATAEVENT, IDUSER, FLAG FROM #USER_EVENT_IN_ORDERED where FLAG=1) AS Uscita 
    LEFT OUTER JOIN
    (select DATAEVENT, IDUSER, FLAG FROM #USER_EVENT_IN_ORDERED where FLAG=0) AS Entrata 
    ON Entrata.IDUSER=Uscita.IDUSER
    WHERE Uscita.DataEvent>ISNULL(Entrata.DataEvent,'1900-01-01 00:00:00')

    Ciao

    • Contrassegnato come risposta brggpr giovedì 10 aprile 2014 15:04
    giovedì 10 aprile 2014 14:36
  • Grande
    giovedì 10 aprile 2014 15:05