MS-SQL-Abfrage min max und zugehörige Werte aus JOIN
Hallo,
wenn ich in einem JOIN über 2 Tabellen durchführe und mir min/max-Wert eines Feldes anzeigen lasse. Wie bekomme ich es hin, dass dann zu dem jeweiligen min/max-Wert auch z.B. ein dazugehöriger anderer Wert mit angegeben wird.
Ergebnis
Was ich mir allerdings Wünsche wäre Kunde max, Kunde min in Bezug zu VK max / min:
Kann mir da bitte jemand einen Denkanstoß geben?
wenn ich in einem JOIN über 2 Tabellen durchführe und mir min/max-Wert eines Feldes anzeigen lasse. Wie bekomme ich es hin, dass dann zu dem jeweiligen min/max-Wert auch z.B. ein dazugehöriger anderer Wert mit angegeben wird.
1
2
3
4
5
6
2
3
4
5
6
SELECT KHKArtikelKunden.Artikelnummer, KHKArtikelKunden.AuspraegungID ,(ISNULL(KHKVariantenAuspraegungen.Auspraegung1,'') + ' ' + ISNULL(KHKVariantenAuspraegungen.Auspraegung2,'')) AS Variante,
min(KHKArtikelKunden.Einzelpreis) as VKmin, max(KHKArtikelKunden.Einzelpreis) as VKmax
FROM KHKArtikelKunden left JOIN
KHKVariantenAuspraegungen ON KHKArtikelKunden.AuspraegungID = KHKVariantenAuspraegungen.AuspraegungID
where KHKArtikelKunden.Artikelnummer = '42.002.320'
group by KHKArtikelKunden.Artikelnummer, KHKArtikelKunden.AuspraegungID ,KHKVariantenAuspraegungen.Auspraegung1, KHKVariantenAuspraegungen.Auspraegung2
Ergebnis
1
2
3
2
3
Kunde Artikel-Nr Ausprägung Variante VK min VK max
20562 42.002.320 2079 550 3,00 3,00
21150 42.002.320 2079 550 1,25 1,25
Was ich mir allerdings Wünsche wäre Kunde max, Kunde min in Bezug zu VK max / min:
1
2
2
Artikel Ausprägung Variante VK min VK max Kunde minPreis Kunde maxPreis
42.002.320 2079 550 1,25 3,00 21150 20562
Kann mir da bitte jemand einen Denkanstoß geben?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 355568
Url: https://administrator.de/forum/ms-sql-abfrage-min-max-und-zugehoerige-werte-aus-join-355568.html
Ausgedruckt am: 14.04.2025 um 14:04 Uhr
3 Kommentare
Neuester Kommentar
Grundsätzlich gilt das bei einem GROUP BY alle Werte im Select-Teil entweder gruppiert oder aggregiert werden müssen. Für letzteres bieten die verschiedenen SQL Server verschiedene Funktionen an, welche MSSQL Version ist im Einsatz?
PS: In deinem Fall würde ich vermutlich erst die aggregierten Spalten ermitteln, das alles in einem Subselect packen und dann alle anderen Werte die sich auf min und max beziehen dazu joinen. Etwa so:
Das geht zwar auch eleganter aber ist logisch einfach und kann einfach erweitert werden.
PS: In deinem Fall würde ich vermutlich erst die aggregierten Spalten ermitteln, das alles in einem Subselect packen und dann alle anderen Werte die sich auf min und max beziehen dazu joinen. Etwa so:
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT t1.*,t2.spalte2,t2.spalte3
FROM (
SELECT gruppierung, min(spalte1) AS min_spalte1, max(spalte1) AS max_spalte1
FROM tabelle
GROUP BY gruppierung
) t1
LEFT JOIN tabelle t2
ON t1.gruppierung = t2.gruppierung
Das geht zwar auch eleganter aber ist logisch einfach und kann einfach erweitert werden.