Eigentlich habe ich viel daran gearbeitet, und viele Mauern getroffen, aber schließlich eine Antwort gefunden - mehr von einem Hack - aber es hat sehr gut funktioniert und den Leseaufwand meiner Abfragen um 90% reduziert. .. Anstatt die korrelierte Abfrage mehrmals zu duplizieren, um mehrere Spalten aus der Unterabfrage zu erhalten, habe ich einfach concat alle Werte verwendet, die ich in ein Komma-getrenntes varchar zurückgeben möchte, und sie dann wieder in der Anwendung abzurollen. So.
statt
select a,b,
(select x from bigcorrelatedsubquery) as x,
(select y from bigcorrelatedsubquery) as y,
(select z from bigcorrelatedsubquery) as z
from outertable
ich jetzt
select a,b,
(select convert(varchar,x)+','+convert(varchar,x)+','+convert(varchar,x)+','
from bigcorrelatedsubquery) from bigcorrelatedquery) as xyz
from outertable
group by country
tun habe ich jetzt alle drei korrelierte ‚Skalar‘ Werte, die ich brauchte, hatte aber nur die korrelierte Unterabfrage einmal statt dreimal auszuführen.
Hängt von Details wie Spalten und Tabellen ab. –
@OMG Ponis: Wie? Gibt es dafür keinen allgemeinen Weg? – Wernight
Ich stimme @OMG zu. Das heißt, wenn Sie eine * Unterabfrage schreiben können, die sowohl 'Umsatz' als auch 'Kosten' als Spalten zurückgibt, kann die Abfrage, die um diese Unterabfrage gelegt wird, 'Umsatzkosten' ausführen. Für weitere Details benötigen wir einige Details zu Ihrem Schema. –