Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
671 Beiträge
 
FreePascal / Lazarus
 
#23

AW: [SQL] Wie Gruppensumme bilden?

  Alt 10. Mär 2021, 11:06
und ergänzend zu mkinzler, wenn du da alle variablen als return parameter drin hast, kannst du bei naherzu jeder Query Komponente, die du auch für einen select benutzen kannst, die property sql mit dem execute block .... text füllen und mit open dann durch die datenmenge laufen.

und wenn es mal eine summe, aber auch mal keine summe geben könnte , dann geht noch folgende änderung

Code:
   
select sum(Menge) from VorgangPos where substring(ArtikelNr from 1 for 5) = Gruppe into :Gruppenmenge;
suspend;
damit würdest du auch einen record zur äußeren Hauptdatenmenge bekommen, wenn es gar keine details in VorgangPos gibt
(ist in diesem fall wegen dem Sum() nicht so wichtig, weil der immer genau einen record liefert, wen das die einzige spalte ist, aber wichtig ist das der "for select ... into" auf einer datenmenge die immer nur einen record liefert auch wenig sinnvoll.

und als logik: immer wenn dein quelltext in einem execute block oder auch in eine sp beim schlüsselwort suspend landet, wird das was in den return parametern steht als record erzeugt und kann damit in delphi bei der query mit while not eof und next ausgewertet werden

eine execute block muss auch gar noch zwingend auf einer datenmenge entstehen auch so was geht nämlich

Code:
execute block
returns (anz integer)
as
begin
 anz=1;
 suspend;
 anz=2;
 suspend;
end
auf dem weg kann man sehr komplexe ergebnisse zeilenweise und spaltenweise zusammenstellen, bei denen man mit einem sql statement abstruse verschachtelungen oder unions brauchen würde
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat