AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Datum aus voriger Zeile zum berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Datum aus voriger Zeile zum berechnen

Ein Thema von concept2015 · begonnen am 17. Aug 2019 · letzter Beitrag vom 26. Aug 2019
Antwort Antwort
concept2015

Registriert seit: 22. Dez 2015
Ort: Nähe Dortmund
44 Beiträge
 
Delphi 7 Professional
 
#1

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 07:09
Danke für die Mühe - aber der Fehler im Ergebnis (Zeile 1) ist
noch da !
In der ersten Zeile kann kein Datum vorher stehen - muss also null
sein -

Die Grunddaten sind:
QEchtDat WER Nummer
2019-01-10 Demag 139
2019-01-19 Demag 139
2019-01-25 Demag 139
2019-02-01 Demag 139
2019-02-08 Demag 139
2019-02-13 Demag 139

Es handelt sich hier um Kundenbesuche mit der Frage, wieviele Tage zwischen den Besuchen liegen.
Logischerweise kann in Zeile 1 keine Berechnung erfolgen, da es sich um den ersten Besuch handelt.

Das gesuchte Ergebnis müsste so aossehen:
QEchtDat WER Nummer Tage
2019-01-10 Demag 139 0
2019-01-19 Demag 139 9
2019-01-25 Demag 139 6
....
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#2

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 07:12
Klickst du auf der Beweis

Ich sehe da als Ergebnis
Code:
QEchtDat       WER     Nummer Tage
2019-01-10      Demag   139     0
2019-01-19      Demag   139     9
2019-01-25      Demag   139     6
2019-02-01      Demag   139     7
2019-02-08      Demag   139     7

Geändert von Schokohase (26. Aug 2019 um 07:15 Uhr)
  Mit Zitat antworten Zitat
concept2015

Registriert seit: 22. Dez 2015
Ort: Nähe Dortmund
44 Beiträge
 
Delphi 7 Professional
 
#3

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 07:28


Bei mir in SqLiteexpert:

QEchtDat WER Nummer Tage
2019-01-10 Demag 139 20
2019-01-19 Demag 139 9
2019-01-25 Demag 139 6
2019-02-01 Demag 139 7
2019-02-08 Demag 139 7
2019-02-13 Demag 139 5



So weit waren wir doch schon ohne COALESCE(

Und auf DER BEWEIS kommt kein Ergebnis ?
You need to build the schema before you can run a query.

Geändert von concept2015 (26. Aug 2019 um 07:36 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 07:40
Screenshot sqlfiddle
SQL_Fiddle.jpg
Screenshot SQliteExpert
2019-08-26 08_38_43-Window.png
Ich kann dir anscheinend nicht helfen (ich frage mich allerdings auch wer es könnte)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 08:09
Und auf DER BEWEIS kommt kein Ergebnis ?
You need to build the schema before you can run a query.
sqlfiddle hinkt manchmal oder will einen anderen Browser..
einfach später noch mal probieren

"Build Your Schema" möchte nur, dass Du den Knopf drückst, um Tabellen anzulegen und Daten einzuspielen, also das Script auf der linken Seite (manuell) starten.
Auf der rechten kannst Du die Abfrage formulieren, ändern, starten.

Ist aber alles auch Wurscht, wenn es nicht klappt. Das ist ja nur ein Hilfsmittel, um online 100% das Gleiche zu machen und über das Gleiche zu reden.
Script kopieren und lokal ausführen muss zum gleichen Ergebnis führen, das ist der Punkt.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 08:18
Idee: In den Subselect muss auch die Einschränkung auf Jahr und Monat rein!

Die 20 in der ersten Zeile sind somit die Tage seit dem letzten Besuch im Vormonat und da z.B. Schokohase vermutlich in seinen Testdaten keinen Vormonat hat, kommt er da auf 0? Evtl. liefert der Subselect nach der Einschränkung Null statt 0, dann muss da ggf. noch sowas wie ein "Wenn Null dann 0" drum, in Oracle wäre das NVL, keine Ahnung wie bei FB der Befehl heißt.
Ralph
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 08:22
Also klar, andere Daten ergeben natürlich andere Ergebnisse. Dafür ist ja ein Testfall da, wie Schokohase ihn gemacht hat.
Gruß, Jo
  Mit Zitat antworten Zitat
concept2015

Registriert seit: 22. Dez 2015
Ort: Nähe Dortmund
44 Beiträge
 
Delphi 7 Professional
 
#8

AW: Datum aus voriger Zeile zum berechnen

  Alt 26. Aug 2019, 14:16
Der Tip von Ralph war goldrichtig.
Idee:
In den Subselect muss auch die Einschränkung auf Jahr und Monat rein!

Code:
SELECT
  Qechtdat,wer,nummer,
  JulianDay(Qechtdat) - COALESCE(
    (SELECT JulianDay(Qechtdat) As Tage
      FROM Zwischen t2
      WHERE t2.nummer = t1.nummer
      AND JulianDay (t2.Qechtdat) < JulianDay(t1.Qechtdat)
      AND t2.Jahr = "2019" -- <---- !
      AND nummer = "139"  -- <---- !
      ORDER BY
      JulianDay(t2.Qechtdat) DESC
      LIMIT 1),JulianDay(Qechtdat)) AS Tage
   FROM Zwischen t1
   WHERE Jahr = "2019"
   AND nummer = "139"
bringt:

QEchtDat WER Nummer Tage
2019-01-10 Demag 139 0
2019-01-19 Demag 139 9
2019-01-25 Demag 139 6
2019-02-01 Demag 139 7
2019-02-08 Demag 139 7
2019-02-13 Demag 139 5
2019-02-27 Demag 139 14

Mit COALESCE( .... ohne ,0)

DANKE Ralph
Und auch DANKE an alle anderen, die sich über mein Problem den Kopf zerbrochen haben.

Geändert von concept2015 (26. Aug 2019 um 14:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz