Moin
@FaTaLGuiLLoTiNe: Die HAVING-Klausel funktioniert so nicht, da (zumindest bei LOCAL-SQL) diese nur auf sog. Aggregat-Felder wie SUM() etc anzuwenden ist.
Beispiel:
SQL-Anweisung
1: 2: 3: 4: 5: 6:
| SELECT kundennummer, SUM(preis) AS Preis FROM "lager.db" WHERE (status = "verkauft") AND (eingang_datum > "01.03.2005") AND (kundennummer BETWEEN 1001 AND 1180) GROUP BY kundennummer HAVING SUM(preis)>1000 |
@hube: Versuch's mal so:
SQL-Anweisung
1: 2: 3: 4: 5:
| SELECT kundennummer, SUM(preis) AS Preis FROM "lager.db" WHERE (status = "verkauft") AND (eingang_datum > "01.03.2005") AND (kundennummer BETWEEN 1001 AND 1180) GROUP BY kundennummer |
Das ist die 'normale' Variante, Wenn Du flexibel sein möchtest, sprich ein anderes eingangsdatum oder einen anderen Kundenkreis, dann empfiehlt sich das ganze zu parametrisieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| Query1.SQL.Text := 'SELECT kundennummer, SUM(preis) AS Preis FROM "lager.db" ' + 'WHERE (status = "verkauft") ' + 'AND (eingang_datum > :EDATUM) ' + 'AND (kundennummer BETWEEN :KDNR_VON AND :KDNR_BIS) ' + 'GROUP BY kundennummer '; Query1.Prepare; Query1.Params[0].AsDate := '01.03.2005'; Query1.Params[1].AsInteger := 1001; Query1.Params[2].AsInteger := 1180; Query1.Open;
Query1.Close; Query1.Params[0].AsDate := '01.03.2005'; Query1.Params[1].AsInteger := 2001; Query1.Params[2].AsInteger := 2999; Query1.Open; |