SUM ( CASE IsNull(Feld3,1)
WHEN 0 THEN IsNull(Feld4, 0) \* IsNull(Feld5, 0)
ELSE IsNull(Feld4, 0) \* IsNull(Feld6 ,0)
END
) OVER (PARTITION BY Feld1, Feld2) As NeuesFeld
bei einer detailierteren Abfrage stellte sich heraus, dass die Felder 3-6 allesamt NULL (Feld ohne Inhalt) sind.
Nach meinem Verständnis müsste die Summe dann 0 (die Zahl Null) ergeben. Stattdessen wird im Ergebnis NULL (Feld ohne Inhalt) ausgegeben.
SUM() liefert ein leeres Ergebnis, wenn die Tabelle leer ist. Sobald die Tabelle mind. eine Zeile hat, egal ob mit NULL oder Werten belegt, liefert SUM() den erwarteten Wert.
Aus deiner Beschreibung entnehme ich, dass Feld1 und Feld2 Werte haben. Demnach sollte SUM() auch 0 liefern. Ich hab’s eben mit deinem Beispiel geprüft. Funktioniert prima bei mir.
Was immer das Problem ist, an SUM() kann es nicht liegen.
SUM() liefert ein leeres Ergebnis, wenn die Tabelle leer ist.
Sobald die Tabelle mind. eine Zeile hat, egal ob mit NULL oder
Werten belegt, liefert SUM() den erwarteten Wert.
Ja, die Summenfunktion ist, soweit ich das beurteilen kann,
auch nicht das Problem. Nach meiner Meinung tritt ein Fehler
im Zusammenspiel zwischen IsNull und SUM auf.
IsNull arbeitet korrekt. Das gleiche Konstrukt gibt es nochmals
ohne die Summerierung (für einzelne Datensätze). Da wird alles korrekt angezeigt. Nur in Kombination mit SUM funktioniert nix
mehr.
Aus deiner Beschreibung entnehme ich, dass Feld1 und Feld2
Werte haben. Demnach sollte SUM() auch 0 liefern.
Feld1 und Feld2 sind Primärschlüssel. Werden Sie in anderen
Tabellen als den jeweils Ursprünglichen gespeichert, besteht
referentielle Integrität über Foreign-Key-Constraints.
NULL-Werte sind für Feld1 und Feld2 ausgeschlossen.
Ich hab’s
eben mit deinem Beispiel geprüft. Funktioniert prima bei mir.