![]() |
AW: Datum aus voriger Zeile zum berechnen
(langfristig hilft das ungemein!)
Da ich nicht weiß, bzw. nachvollziehen kann ob der Subselect funktioniert, solltest Du sicherstellen daß
SQL-Code:
solche mißverständlichen Formulierungen nicht auftauchen.
...
JulianDay(Qechtdat) - (SELECT JulianDay(Qechtdat) As Integer ... Und dann
SQL-Code:
und dann schauen wir mal weiter.
...
JulianDay(Qechtdat) -coalesce( (SELECT JulianDay(Qechtdat) As PrevDate ... ,0) From ...... Gruß K-H |
AW: Datum aus voriger Zeile zum berechnen
Die ganze Abfrage mit Subselect und Ergebnis steht in #38
Subselect klappt. Nur die erste Zeile ist logischerweise falsch, da kein Datum davor existiert. In meinem Beipiel steht in der ersten Zeile eine 20 ??? wo nimmt er die her ? Die erste Zeile muss zwingend eine 0 sein Die Abfrage:
bringt die Rohdaten:
2019-01-10 //erster Besuch (keine vergangenen Tage) //Tage = 0 //weil nicht mit Datum vorher berechenbar. 2019-01-19 //zweiter Besuch wieviel Tage sind vergangen // seit erstem Besuch = 9 2019-01-25 //dritter Besuch wieviel Tage sind vergangen // seit zweitem Besuch = 6 ... Ich muss praktisch den ersten Durchlauf ohne Berechnung machen - alle weiteren mit Berechnung. -coalesce((SELECT JulianDay(Qechtdat) As PrevDate ... ,0) bringt einen Syntax-Fehler bei as Wenn ich z.B. eine Zählvariable einbauen könnte, würde ich Sql erst ab dem zweiten Satz berechnen lassen. |
AW: Datum aus voriger Zeile zum berechnen
Oh entschuldige,da hab ich mich vertan
SQL-Code:
Gruß
-coalesce(SELECT JulianDay(Qechtdat)...
,0) As PrevDate K-H P.S. Wenn der Subselect funktioniert sollte er null für den ersten Datensatz liefern das wird dann durch coalesce(subselect,0) zu 0, und das war doch was du wolltest? |
AW: Datum aus voriger Zeile zum berechnen
Hallo :-D,
egal, wie ich den Befehl coalesce einbaue, Syntax Fehler. Hier nochmal der Code, der bis auf die erste Zeile klappt
Code:
Ich hab noch keine verständliche deutsche Erklärung für den Befehl "coalesce" gefunden, darum fische ich mit Deinem Tip im trüben.
SELECT Qechtdat,wer,nummer,
JulianDay(Qechtdat) - (SELECT JulianDay(Qechtdat) As Tage FROM Zwischen t2 WHERE t2.nummer = t1.nummer AND JulianDay (t2.Qechtdat) < JulianDay(t1.Qechtdat) ORDER BY JulianDay(t2.Qechtdat) DESC LIMIT 1) AS Tage FROM Zwischen t1 where Jahr = "2019" and nummer = "139" Aber trotzdem vielen Dank für Deine Geduld. |
AW: Datum aus voriger Zeile zum berechnen
Hmm..
Zitat:
![]() Die Beschreibung ist gleich mit der von MySQL (2. Link in EN), Oracle und SQLite: ![]() ![]() ![]() Somit sollte diese Funktion in allen DB-Systemen vorhanden sein... und somit sollte -coalesce((SELECT JulianDay(Qechtdat) As PrevDate , 0) entweder das letzte Datum, wenn vorhanden und somit nicht NULL, zurück liefern, ansonsten, wenn kein Datum vom SubSelect kommt (somit NULL) die '0'. |
AW: Datum aus voriger Zeile zum berechnen
Der Code:
Code:
Liefert im SQLiteExpertPro64 und in Delphi den Fehler:
JulianDay(Qechtdat) -
coalesce((SELECT JulianDay(Qechtdat) PrevDate , 0) FROM Zwischen t2 near "Form":syntax error Auch in einer Zeile geschrieben :( |
AW: Datum aus voriger Zeile zum berechnen
Zähl mal die Klammern!
Gruß K-H |
AW: Datum aus voriger Zeile zum berechnen
Die Abfrage mit coalesce:
Code:
Es kommt - der beschriebene Fehler
SELECT Qechtdat,wer,nummer,
JulianDay(Qechtdat) - coalesce((SELECT JulianDay(Qechtdat) as Tage ,0) FROM Zwischen t2 WHERE t2.nummer = t1.nummer AND JulianDay (t2.Qechtdat) < JulianDay(t1.Qechtdat) ORDER BY JulianDay(t2.Qechtdat) DESC LIMIT 1) AS Tage FROM Zwischen t1 where Jahr = "2019" and nummer = "139" Die gleiche Abfrage ohne coalesce
Code:
Bis auf Zeile 1 läuft es.
SELECT Qechtdat,wer,nummer,
JulianDay(Qechtdat) - (SELECT JulianDay(Qechtdat) as Tage FROM Zwischen t2 WHERE t2.nummer = t1.nummer AND JulianDay (t2.Qechtdat) < JulianDay(t1.Qechtdat) ORDER BY JulianDay(t2.Qechtdat) DESC LIMIT 1) AS Tage FROM Zwischen t1 where Jahr = "2019" and nummer = "139" Wo habe ich den Fehler ? |
AW: Datum aus voriger Zeile zum berechnen
SQL-Code:
Gruß
SELECT Qechtdat,wer,nummer,
JulianDay(Qechtdat) - coalesce(SELECT JulianDay(Qechtdat) FROM Zwischen t2 WHERE t2.nummer = t1.nummer AND JulianDay (t2.Qechtdat) < JulianDay(t1.Qechtdat) ORDER BY JulianDay(t2.Qechtdat) DESC LIMIT 1),0) AS Tage FROM Zwischen t1 where Jahr = "2019" and nummer = "139" K-H |
AW: Datum aus voriger Zeile zum berechnen
1 zu 1 kopiert
:( near "Select": syntax error :pale: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 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