Ich versuche, eine ziemlich komplizierte SELECT
Berechnungen, die ich verallgemeinern werde:
- Hauptabfrage ist ein Wildcard-Select für eine Tabelle
- Eine Unterabfrage führt eine
COUNT()
aller Artikel auf der Grundlage einer Bedingung (dies funktioniert problemlos) - Eine weitere Unterabfrage führt eine
SUM()
von Zahlen in einer Spalte auf der Grundlage einer anderen Bedingung. Dies funktioniert auch korrekt, außer wenn keine Datensätze die Bedingungen erfüllen, gibt esNULL
.
Ursprünglich wollte ich die beiden Unterabfragen addieren, etwa so (subquery1)+(subquery2) AS total
was gut funktioniert, es sei denn, subquery2 ist null, in diesem Fall total
null wird, unabhängig davon, was das Ergebnis von subquery1 ist. Mein zweiter Gedanke war, zu versuchen, eine dritte Spalte zu erstellen, die eine Berechnung der beiden Unterabfragen sein sollte (d.h., (subquery1) AS count1, (subquery2) AS count2, count1+count2 AS total
), aber ich glaube nicht, dass es möglich ist, zwei berechnete Spalten zu berechnen, und selbst wenn es möglich wäre, habe ich das Gefühl, dass das gleiche Problem besteht.
Hat jemand eine elegante Lösung für dieses Problem außerhalb von nur immer die zwei Subquery-Werte und summieren sie in meinem Programm?
Merci !
0 Stimmen
Können Sie Einzelheiten nennen? Wie einige Beispielabfragen, die Sie erstellt haben.
0 Stimmen
Denken Sie auch an den Trick COALESCE(SUM(CASE WHEN condition THEN 1 ELSE 0 END),0), um Elemente bedingt zu zählen: Sie können möglicherweise zwei Unterabfragen zu einer einzigen zusammenfassen oder sie in die Hauptabfrage integrieren.