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

Beginn und Ende (Datum) berechnen wenn nur Beginn in Tabelle

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Wolf-Tilmann, 8 April 2016.

  1. Wolf-Tilmann

    Wolf-Tilmann Aktiver Benutzer

    Hallo allerseits,

    könnt Ihr mir bitte hier wieder einmal weiterhelfen?

    Ich habe eine Tabelle, mit einer Spalte Thema und einer Spalte Beginn. Ein neues Thema kann nur begonnen werden, wenn das alte abgeschlossen ist. Daraus möchte ich Abfrage erstellen, welche mir zu jedem Thema Beginn und Ende ausgibt. Theoretisch könnte man als Ende den Beginn des folgenden Themas nehmen.

    Nur weiß ich nicht, wie ich hier vorgehen soll/kann.

    Vielen Dank schon einmal
    &
    Ein schönes Wochenende

    Wolf-Tilmann
     
  2. ukulele

    ukulele Datenbank-Guru

    Ich bin mir nicht sicher wie elegant man das in Access hinbekommen kann, eventuell so:
    Code:
    SELECT   t1.thema,
         t1.beginn,
         (   SELECT   min(t2.beginn)
           FROM   tabelle t2
           WHERE   t2.beginn > t1.beginn ) AS ende
    FROM   tabelle t1
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Das geht mit lead():

    Code:
    test=# select * from themen ;
      thema  |  begin   
    ---------+---------------------
     thema 1 | 2016-04-08 08:00:00
     thema 2 | 2016-04-08 09:00:00
     thema 3 | 2016-04-08 09:30:00
     thema 4 | 2016-04-08 12:30:00
    (4 rows)
    
    test=# select * , lead(begin) over (order by begin) - begin as dauer from themen ;
      thema  |  begin  |  dauer   
    ---------+---------------------+----------
     thema 1 | 2016-04-08 08:00:00 | 01:00:00
     thema 2 | 2016-04-08 09:00:00 | 00:30:00
     thema 3 | 2016-04-08 09:30:00 | 03:00:00
     thema 4 | 2016-04-08 12:30:00 |
    (4 rows)
    
    Aber nur, wenn die DB das kennt. Ganz alte Systeme wie z.B. MySQL kennen das nicht.
     
  4. Wolf-Tilmann

    Wolf-Tilmann Aktiver Benutzer

    @ukulele:
    Sorry, ich habe nur eine Tabelle,

    @akretschmer:
    mein Access gibt bei LEAD() eine Fehlermeldung aus.

    Trotzdem danke Euch.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Die Lösung von @ukulele bezieht sich auf nur eine Tabelle, soweit ich das sehe. Wenn Access das nicht kann, würde ich es nicht verwenden. Die Funktionen sind schon sehr lange üblich - und sehr nützlich.
     
  6. ukulele

    ukulele Datenbank-Guru

    Ja ich habe bewusst eine Lösung gewählt die Access können müsste. Ansonsten hätte ich auch einen anderen Weg beschritten.

    Da ich zweimal auf die selbe Tabelle zugreife ("tabelle" musst du ersetzen), muss ich mit Aliasen arbeiten, in diesem Fall t1 und t2.
     
  7. Wolf-Tilmann

    Wolf-Tilmann Aktiver Benutzer

    hmm.
    könntet Ihr bitte einen Blick auf den beigefügten Screenshot werfen?

    Danke Euch
     

    Anhänge:

  8. akretschmer

    akretschmer Datenbank-Guru

    Ja. Du mußt es halt richtig machen. @ukulele hat es Dir richtig gezeigt, Du brauchst es eigentlich nur richtig abzutippen Come on, Du schaffst das!
     
  9. Wolf-Tilmann

    Wolf-Tilmann Aktiver Benutzer

    Ich habe den Text 1:1 kopiert (also auch mit dem Text "tabelle") und bekomme die Fehlermeldung:
     

    Anhänge:

  10. akretschmer

    akretschmer Datenbank-Guru

    Bitte für 2 Cent Hirn besorgen und mitdenken. Du mußt "tabelle" mit dem Namen Deiner Tabelle ersetzen.
     
  11. Wolf-Tilmann

    Wolf-Tilmann Aktiver Benutzer

    Ich habe jetzt für einen Cent Hirn investiert und bin :oops:.
    Ja es funktioniert.
    Danke schön
    & ein schönes Wochenende

    Wolf-Tilmann
     
    akretschmer 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