![]() |
Datenbank: Oracle • Version: 10 • Zugriff über: BDE
SQL-Abfrage ob ein Einzelpreis NULL ist
Hallo zusammen,
ich habe eine komplexe SQL-Abfrage:
Delphi-Quellcode:
Nun würde ich gerne den ausgegebenen Datensatz, welcher bei der Berechnung der Summe einen Einzelpreis mit 0 oder NULL hatte gerne kennzeichnen.
SELECT DISTINCT LB.PROJEKTNUMMER, LB.BUCHUNGSART_ID, BA.BUCHUNGSART, BA.PLUSMINUS, BA.FIRMA, LB.BEARBEITUNG, LB.LIEFERSCHEINNR,
SUM(LB.STUECK * LB.PREIS) AS PREIS FROM SYSSIGMA2GML.LAGERBESTANDSBUCHUNG LB LEFT JOIN SYSSIGMA2GML.BUCHUNGSART BA ON LB.BUCHUNGSART_ID = BA.ID LEFT JOIN SYSSIGMA2GML.LAGERSTAMM LS ON LB.LAGERNUMMER = LS.LAGERNUMMER LEFT JOIN SYSFORM.KOBUSYS_SAPMATERIAL SAP ON LB.MATERIALNUMMER = SAP.MATERIALNUMMER LEFT JOIN SYSFORM.KOBUSYS_VERBRAUCHSMATERIAL VER ON LB.MATERIALNUMMER = VER.MATERIALNUMMER WHERE LB.ID IS NOT NULL AND LS.HAUPTLAGERKENNZEICHEN = '1' AND LB.SAP_UEBERGABE IS NULL AND TRANSLATE(LB.MATERIALNUMMER,' 0123456789', '#') is null GROUP BY LB.PROJEKTNUMMER, LB.BUCHUNGSART_ID, BA.BUCHUNGSART, BA.PLUSMINUS, BA.FIRMA, LB.BEARBEITUNG, LB.LIEFERSCHEINNR HAVING 1 = 1 ORDER BY LB.PROJEKTNUMMER Wie kann ich das SQL-technisch ermitteln ? Gruss Holger |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Bei einem Number Typ der Basisspalte könntest Du so eine berechnete Spalte per decode ausgeben:
SQL-Code:
Das gibt bei null oder 0 den Wert -1 aus, sonst 0.
select ... decode(mycolumn, 0, -1, null, -1, 0) as myColumnValueisNull ..
Werte in Anführungszeichen entsprechend für Textspalte bzw. Textausgabe. |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Oder so
SQL-Code:
SUM(NULLIF(LB.STUECK * LB.PREIS, 0)) IS NULL AS HierGabEsEinNullDrin
NULLIF macht aus einer 0 ein NULL, die NULL bleiben NULL und SUM gibt doch auch NULL zurück, sobald einer der Werte NULL war? |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Zitat:
NVL(e1,e2) gibt e2 zurück, wenn e1 NULL ist. |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Jupp, das NULLIF gibt somit immer NULL zurück, sobald im ersten Parameter eine 0 oder NULL drin sind, ansonsten den Wert dieses Parameters, da der zweite Parameter ja 0 ist.
Und wenn das SUM nun auch noch NULL liefert, sobald einer der Werte NULL ist, dann liefert IS NULL ein True und somit entspricht das dann der gewünschten Funktion. :angel: |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Zitat:
Somit können selbstgemachte Statistik-Funktionen
Code:
durchaus in die Hose gehen
select sum(soldprice) / count(Customer) as Durchschnitt
so geht's wieder
Code:
Gruß
select sum(soldprice) / count(Customer) as Durchschnitt
.. where soldprice is not NULL K-H |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Im Postgres weiß ich das Verhalten aktuell nur vom COUNT.
count(Feld) zählt nur Datensätze, wo das Feld nicht NULL ist, während count(*) alle Datensätze zählt. |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Hallo zusammen,
dank schon einmal für die Hilfe. Nur leider klappt das nicht, wenn ich dies in das SQL einbaue:
Delphi-Quellcode:
Beispiel:
SUM(NULLIF(LB.STUECK * LB.PREIS, 0)) AS PREIS_NULL
STUECK PREIS 1 2€ 2 0€ Ergebnis aus SUM(LB.STUECK * LB.PREIS) = 2€ Ergebnis aus SUM(NULLIF(LB.STUECK * LB.PREIS, 0)) AS PREIS_NULL auch 2€ Was für Möglichkeiten habe ich noch ? Gruss Holger |
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
Das mit dem COUNT scheint dort genauso zu sein.
![]() Im Grunde bräuchte man irgendeine Aggregatfunktion, welche NULL liefert, sobald ein NULL in den werten vorkommt. Funktioniert sowas?
SQL-Code:
COUNT(NULLIF(LB.STUECK * LB.PREIS, 0)) <> COUNT(*) AS PREIS_NULL
Das zweite COUNT zählt alle Datensätze und das erste COUNT zählt alles ohne NULL/0. oder
SQL-Code:
(beachtet nur NULL, aber keine 0)
COUNT(LB.STUECK) + COUNT(LB.PREIS) <> COUNT(*) * 2 AS PREIS_NULL
|
AW: SQL-Abfrage ob ein Einzelpreis NULL ist
@p80286: Nein, das geht. NULL wird nicht ignoriert, es ist nur undefiniert.
Undefiniert * irgendwas = ebenfalls undefiniert, also NULL. In die Hose geht das nur, wenn man NULL zu 0 macht und dadurch teilt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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