Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Access SQL select mit berechneten Feldern? (https://www.delphipraxis.net/211440-access-sql-select-mit-berechneten-feldern.html)

HCB 16. Sep 2022 12:35

Datenbank: Access • Version: 2003 • Zugriff über: SQL / Delphi

Access SQL select mit berechneten Feldern?
 
Hallo, ich stehe momentan auf den Schlauch, ich möchte von den zwei Datensätzen die Differenz angezeigt bekommen, also 20 minus 15 = Menge 5.
Diese Abfrage funktioniert und zeigt die Datensätze:

SELECT ABFPosMenge as Menge, ABFPosArtNr as Nummer, ABFPosName1 as bezeichnung
FROM ABFPos INNER JOIN ABFDok
ON ABFPos.ABFPosAuftragID = ABFDok.ABFDocID
where ABFDok.ABFDocAuftragnr ='A021159' and ABFPosType = 0
and ABFPosArtOption <> 15;

Ergebnis:
Menge Nummer bezeichnung
Currency Text[22] Text[44]
-----------------------------------------------------------------------------------
20 1062990 Testartikel1
15 1062990 Testartikel1

Wie bekomme ich das hin, dass mir als Ergebnis 5 angezeigt wird.
Bin Neuling, vielleicht hilft mir jemand. Vielen herzlichen Dank.

Harry

Jumpy 16. Sep 2022 12:52

AW: Access SQL select mit berechneten Feldern?
 
Mit
Code:
SUM(ABFPosMenge) as ABFPosMenge
würdest du die Summe bekommen, wenn du anhand einer weiteren Bedingung oder Feldes entscheiden kannst was von anderen abgezogen wird ginge dann:

SQL-Code:
SUM(CASE WHEN IRGENDWAS THEN ABFPosMenge ELSE -1*ABFPosMenge) as ABFPosMenge
Bei beidem brauchst du natürlich unten noch ein
SQL-Code:
GROUP BY ABFPosArtNr, ABFPosName1

himitsu 16. Sep 2022 13:09

AW: Access SQL select mit berechneten Feldern?
 
Jupp, wenn er bei dem zweiten Wert das Vorzeichen ändert, dann kann er SUM benutzen.

Oder eine passende Aggregate-Funktion bauen.

Oder eben die beiden Werte in einen Datensatz bekommen und da selber rechnen.
"-" , "abs" und Co.

Oder halt so ein Zeug wie die Standardabweichung benutzen.
stddev_pop(field)*2 von ein bis zwei Records müsste doch die Differenz ergeben :stupid:

HCB 16. Sep 2022 13:18

AW: Access SQL select mit berechneten Feldern?
 
Hallo, danke euch!

Die Summe habe ich schon mal:
SELECT sum(ABFPosMenge) as Menge, ABFPosArtNr as Nummer, ABFPosName1 as bezeichnung
FROM ABFPos INNER JOIN ABFDok
ON ABFPos.ABFPosAuftragID = ABFDok.ABFDocID
where ABFDok.ABFDocAuftragnr ='A021159' and ABFPosType = 0
and ABFPosArtOption <> 15
GROUP BY ABFPosArtNr, ABFPosName1;

aber wie ich den kleinsten Wert 15 vom größeren Wert 20 abzeihen soll, damit das Ergebnis 5 erscheint ist mir leider noch nicht klar.
Ich habe es schon mit Min und Max versucht, da wirft er mir Fehlermeldungen.

Harry

himitsu 16. Sep 2022 13:21

AW: Access SQL select mit berechneten Feldern?
 
Es ist egal, wie rum du rechnest, wenn du dir nur das "absolute" Ergebnis ansiehst.

SQL-Code:
Abs(Sum(field))


Abs(20 - 5) = 15
Abs(5 - 20) = 15

HCB 16. Sep 2022 13:29

AW: Access SQL select mit berechneten Feldern?
 
Es soll ja das Ergebnis 5 rauskommen.

20-15 = 5

20 1062990 Testartikel1
15 1062990 Testartikel1

himitsu 16. Sep 2022 13:38

AW: Access SQL select mit berechneten Feldern?
 
Formel umstellen oder Parameter tauschen ist nicht verboten.
ändert doch nichts an dem Vorgehen. :stupid:

Jumpy 16. Sep 2022 13:52

AW: Access SQL select mit berechneten Feldern?
 
Wenn es immer zwei Werte gibt, einen groß einen klein, dann sollte es doch mit min und max gehen:

SQL-Code:
SELECT MAX(ABFPosMenge)-MIN(ABFPosMenge) as Menge, ABFPosArtNr as Nummer, ABFPosName1 as bezeichnung
FROM ABFPos INNER JOIN ABFDok
ON ABFPos.ABFPosAuftragID = ABFDok.ABFDocID
where ABFDok.ABFDocAuftragnr ='A021159' and ABFPosType = 0
and ABFPosArtOption <> 15
GROUP BY ABFPosArtNr, ABFPosName1;

HCB 16. Sep 2022 14:02

AW: Access SQL select mit berechneten Feldern?
 
Ja Jumpy, vielen Dank! Das wars.
Mit Min/Max hatte ich es schon probiert, aber offensichtlich falsch.
Nochmals Danke.

LG Harry


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz