mardi 26 avril 2016

sqlite start- and enddate for ranges with same value


i'm trying to identify start- and enddate for ranges with same value in a column.
In this scenario, i'm trying to identify start and enddate of ranges where col4 = 0.

To be more concrete:

    CREATE TABLE TEMPTABLE(
      col0,
      col1,
      col2,
      col3,
      col4
    );
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:08:02Z', 0);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:07:02Z', 0);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:06:02Z', 0);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:04:02Z', 1);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:03:02Z', 0);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:02:02Z', 0);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:01:02Z', 0);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-04T00:00:02Z', 0);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-10T07:11:02Z', 1);
    INSERT INTO TEMPTABLE (col0, col1, col2, col3, col4) VALUES ('MYHOST', 'Name', '1234', '2016-04-10T07:10:02Z', 1);

What i actually achieved is to identify the ranges, but i'm not able to group them:

    SELECT a.col0, a.col1, a.col2, a.col3 as Startdate, b.col3 as Enddate, a.rowid, b.rowid
    FROM TEMPTABLE a, TEMPTABLE b
    WHERE a.rowid = b.rowid +1
    AND a.col4 = b.col4
    AND b.col4 = 0

Output:

    MYHOST | Name | 1234 | 2016-04-04T00:07:02Z | 2016-04-04T00:08:02Z
    MYHOST | Name | 1234 | 2016-04-04T00:06:02Z | 2016-04-04T00:07:02Z
    MYHOST | Name | 1234 | 2016-04-04T00:02:02Z | 2016-04-04T00:03:02Z
    MYHOST | Name | 1234 | 2016-04-04T00:01:02Z | 2016-04-04T00:02:02Z
    MYHOST | Name | 1234 | 2016-04-04T00:00:02Z | 2016-04-04T00:01:02Z

Desired Output:

    Hostname | NAME | ID   | STARTDATE            | ENDDATE
    MYHOST   | Name | 1234 | 2016-04-04T00:06:02Z | 2016-04-04T00:08:02Z
    MYHOST   | Name | 1234 | 2016-04-04T00:10:02Z | 2016-04-04T00:13:02Z

BW, Lukas

Aucun commentaire:

Enregistrer un commentaire