Ich versuche, eine ziemlich komplizierte SELECT
Berechnung zu tun, die ich verallgemeinern wird:Berechnete Spalte basiert auf zwei berechnete Spalten
- Hauptabfrage ein Platzhalter zu wählen ist für eine Tabelle
- Eine Unterabfrage hat eine
COUNT()
von alle Elemente auf der Grundlage einer Bedingung (das funktioniert gut) - eine weitere Unterabfrage hat eine
SUM()
von Zahlen in einer Spalte auf einem anderen Zustand basiert. Dies funktioniert auch korrekt, außer wenn keine Datensätze die Bedingungen erfüllen, gibt esNULL
zurück.
Ich wollte zunächst die beiden Subqueries addieren, so etwas wie (subquery1)+(subquery2) AS total
der gut arbeitet, es sei denn subquery2 null ist, in welchem Fall total
null wird, unabhängig davon, was das Ergebnis subquery1 ist. Mein zweiter Gedanke war, zu versuchen, eine dritte Spalte zu erstellen, die eine Berechnung der zwei Unterabfragen sein sollte (dh (subquery1) AS count1, (subquery2) AS count2, count1+count2 AS total
), aber ich denke nicht, dass es möglich ist, zwei berechnete Spalten zu berechnen, und selbst wenn es so wäre, fühle ich mich wie Das gleiche Problem gilt.
Hat jemand eine elegante Lösung für dieses Problem hat außerhalb von nur die beide Unterabfrage Werte bekommen und sie in meinem Programm in Höhe von?
Danke!
Können Sie Einzelheiten angeben? Wie eine Beispielabfrage, die Sie erstellt haben. –
Denken Sie auch an den COALESCE (SUM (CASE WHEN Zustand DANN 1 ELSE 0 ENDE), 0) Trick, um Elemente bedingungslos zu zählen: Sie können möglicherweise zwei Unterabfragen zu einem einzigen kombinieren oder sie in die Hauptabfrage rollen. – araqnid