![]() |
Datenbank: Absolute Datebase • Version: 4.89 • Zugriff über: Absolute Database/Dataset
Wie mehrere Datensätze m.gleichen Feldwerten zusammenführen?
Hallo,
ich habe mal eine Frage. Gegeben sei eine temporäre Importdatenbanktabelle. Diese soll mit einer CSV Datei, die von einem anderen Programm erstellt wird, gefüllt werden und später in einem Datengitter angezeigt werden. Diese CSV Datei sieht wie folgt aus: Zitat:
Wie löst man dies am sinnvollsten?? Ich habe bis jetzt eine
Delphi-Quellcode:
Man könnte nach "lese_ein" einfach einen Datensatz weiter schauen und dort überprüfen, ob das gleiche Datum und die gleiche Uhrzeit vorhanden ist und dann die Daten zusammenführen. Leider sind es mal zwei und mal drei gleiche Datensätze. Vier und mehr ist zwar ganz selten, kann aber auch theoretisch vorkommen.
dataset.first
while not dataset.eof do begin lese_ein; dataset.next; end; Kann man das vielleicht über SQL Befehle lösen? Oder gibt es da noch andere Lösungswege? Schon mal danke für eure Tipps und Hinweise. |
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Hallo Holger,
probiere es mal mit SELECT * FROM Tabelle GROUP BY Datum, Zeit, MAX(Wert1), MAX(Wert2), MAX(Wert3) ... Freundliche Grüße |
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Hallo Achim,
vielen Dank für die Infos :thumb: , werde das heute Abend mal ausprobieren. |
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Hallo noch mal,
mit der SQL Abfrage hat das nicht geklappt, weil die Absolute Database vielleicht den SQL MAX Befehl u.U so nicht unterstützt und weil die Daten in den einzelnen Spalten bei gleicher Uhrzeit und Datum auch mal mehrfach vorkommen können (siehe Beispiel). Das hatte ich vorher aber in der CSV Datei nicht entdecken können. Zitat:
rauszufiltern. :gruebel: |
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Zitat:
SQL-Code:
SELECT datum, zeit, Sum(Wert1), ..., Sum(Wertx) FROM Tabelle GROUP BY Datum, Zeit;
|
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Lege zuerst mal eine Stored Procedure in der DB an. Meine Glaskugel meint, mit "zusammenführen" sei eine Addition gemeint, eventuell auch ein Überschreiben. So lange das nicht gesagt wurde, macht eine genaue Antwort keinen Sinn. Deshalb bur kurz skizziert :
1. Daten einlesen 2. Übergabe an Parameter der SP innerhalb der SP : anhand der Input Parameter Datum und Uhrzeit mit einem SELECT suchen, ob was gleiches da ist. Falls nicht : INSERT. Anderennfalls UPDATE und für eine Addition wäre dann noch so eine Zeile nötig :
SQL-Code:
SET FELDX = FELDX + :PARAM;
|
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Sorry, ich klare die Glaskugel mal etwas auf. :oops:
Es ist nicht sinnvoll die Daten mit gleichem Datum und gleicher Uhrzeit in z.B. zwei, drei oder mehr Datensätzen abzuspeichern. Das verwirrt den Anwender. Ich möchte also nicht eine Summe, einen Durchschnitt oder ähnliches der Spalten bilden, ich möchte nur aus zwei oder drei Datensätzen einen! Datensatz machen. (wenn Datum und Uhrzeit exakt gleich). :???: Hoffe ich habe jetzt die Situation besser beschrieben. |
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Zitat:
|
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Aus diesem Beispiel würde dann...
Zitat:
Zitat:
Grund: die 123 ist ein Blutzuckerwert, die 8 und die 2 sind Insulinmengen und die 2 sind gegessene Broteinheiten (BE). Die 8 und die 2 sind deshalb zwei Einträge, weil man zum Beispiel 8 Einheiten für die 2 BE und noch mal 2 Einheiten Insulin als Korrektur für die "zu hohen" 123 spritzen muss. In meiner Software werden die aber als 10 geführt. Diabetiker unter uns verzeihen mir bitte die etwas unrealistischen Werte... :zwinker: |
Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
Dann stimmt doch sum() da 8+2 = 10
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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