Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

DateTime Liste verschränken

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von sachti, 17 Februar 2017.

  1. sachti

    sachti Neuer Benutzer

    Hallo zusammen,

    Ich habe eine Liste an Zeitpunkten und möchte daraus eine Liste erstellen in der jeweils ein Element mit seinem Nachfolger zusammen aufgeführt ist:

    Die Datenbank heißt [result], das Feld heißt "Created" von Typ column(PK, datetime, not null)
    Die Liste ist DESC sortiert.

    Ausgangspunkt
    2017-02-17 10:04:56.160
    2017-02-16 18:56:29.647
    2017-02-15 21:06:10.640
    2017-02-15 16:19:27.190
    2017-02-15 14:50:37.353
    ...

    Ziel
    2017-02-17 10:04:56.160 2017-02-16 18:56:29.647
    2017-02-16 18:56:29.647 2017-02-15 21:06:10.640
    2017-02-15 21:06:10.640 2017-02-15 16:19:27.190
    2017-02-15 16:19:27.190 2017-02-15 14:50:37.353
    ...

    Kann mir dabei jnd. helfen?
     
    Zuletzt bearbeitet: 17 Februar 2017
  2. sachti

    sachti Neuer Benutzer

    Hab es selbst gelöst

    Code:
    SELECT c.FromDate, MIN(c.ToDate) as ToDate
    FROM
    (
        SELECT DISTINCT a.Created as FromDate, b.Created as ToDate
        FROM
        (
            SELECT Created
            FROM [Results]
        ) as a
        INNER Join
        (
            SELECT Created
            FROM [Results]
        ) as b
        on a.Created < b.Created
    ) as c
    Group by c.FromDate
    Order by c.FromDate ASC
    Fragt nicht wie aber so klappt es!
     
  3. ukulele

    ukulele Datenbank-Guru

    Ist aber irgendwie Suboptimal, warum gibt es denn ein DISTINCT, gibt es auch mehrere Datensätze mit gleicher Zeit?

    Besser fände ich ja:
    Code:
    WITH t AS (
    SELECT   ROW_NUMBER() OVER (ORDER BY Created) AS zeile,
         Created
    FROM   [Results]
         )
    SELECT   a.Created AS FromDate,
         b.Created AS ToDate
    FROM   t a
    LEFT JOIN t b
    ON     a.zeile + 1 = b.zeile
    ORDER BY a.zeile ASC
     
    sachti gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden