Zeilen unter Bedingung zusammenführen SQLite

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Dr. Console
Beiträge: 8
Registriert: Mi 11. Mai 2016, 12:39
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Kontaktdaten:

Zeilen unter Bedingung zusammenführen SQLite

Beitrag von Dr. Console »

Nabend zusammen,

ich habe ein kleines Problem für das ich dir Lösung suche:

Ich habe in einer SQLite DB eine Tabelle nach folgendem schema:

Code: Alles auswählen

ID # Artikel-ID # Menge # Chargen-ID ....
1  #       1    #   3   #    123
2  #       1    #   2   #    456
3  #       2    #   16  #    789
4  #       3    #   2   #    159
5  #       3    #   7   #    753
---


Nun benötige ich zur Auswertung der Bestände eine SQL ausgabe, in welcher die Menge von Zeilen mit identischer Artikel-ID zu einer Zeile zusamengefasst sind.
Hat da jemand ne Idee, bzw. ist das überhaupt über SQL möglich oder muss ich das im Programm machen?

Freue mich auf Antworten.

NG
Dr. Console

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeilen unter Bedingung zusammenführen SQLite

Beitrag von af0815 »

Code: Alles auswählen

SELECT artikel-id, sum(menge)
GROUP BY artikel-id
ORDER BY artikel-id ASC
 


Group by -> macht die Gruppenbildung
sum() -> die funktion die du haben willst (gibt auch min, max, avg,...)
order by -> dann bekommst du es sortiert ( asc oder dsc)
Zuletzt geändert von af0815 am Do 19. Mai 2016, 21:12, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Zeilen unter Bedingung zusammenführen SQLite

Beitrag von Michl »

Wenn ich es richtig verstanden habe (und deine Tabelle "bestand" heißt):

Code: Alles auswählen

    SQLQuery1.SQL.Text := 'SELECT artikelid, SUM(menge) AS "total" FROM bestand GROUP BY artikelid;';

Siehe:
https://www.sqlite.org/lang_aggfunc.html
http://www.techonthenet.com/sqlite/functions/sum.php

[Edit]: Oh, nun war af0815 schneller...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten