Nur ersten Wert

IchHH

Datenbank-Guru
Beiträge
284
Hallo liebe SQL Freunde,

ich habe folgenden Code

SQL:
SELECT
SUM(f.[Wert in Hauswährung]) as Wert
,t.Handlingunit
,t.Vertriebsbeleg
,t.Liefernr

FROM
    (
    SELECT DISTINCT
          TR.[HandlingUnit]
          ,TR.[Vertriebsbeleg]
          ,TR.[Liefernr]
      FROM [dbo].[test2] TR
      WHERE TR.[Vertriebsbeleg] = '0100389631'
      ) t

LEFT JOIN
[dbo].[v_VR_Umsatz] f
ON
  f.Vertriebsbeleg = t.[Vertriebsbeleg]

GROUP BY t.Handlingunit
,t.Vertriebsbeleg
,t.Liefernr

der mir folgendes Ergebnis liefert:
Screenshot 2023-02-08 110055.png

Ich würde aber gerne nur die erste Spalte mit einem Wert versehen oder aber den Wert auf alle drei gleichverteilen. Mit welcher Funktion erreiche ich das? Wichtig ist, dass die Funktion auch in einer View funktioniert.
 
Werbung:
Du würdest vielleicht "Window Functions" einsetzen.
Ich kenne keine Funktion, die den gewünschten Wert direkt ausgibt.
Nach Adam Riese musst Du Deine Summe durch die Anzahl der Datensätze je Beleg teilen.

Alternativ könntest Du Handlingsunit und Liefernummer als String Aggregat packen, sodass aus den 3 Datensätzen 1 wird. Dies ist zumindest dann möglich, wenn mit den aggregierten Feldern nicht weiter gearbeitet werden muss, also ganz grob alles Richtung Reporting.

Möchtest Du gezielt redundante Summenwerte je Gruppe nur 1x anzeigen, musst Du mit der Windows Function RANK arbeiten, einen Gruppenwechsel feststellen und entsprechend nur einmalig die Summe ausgeben.
 
Zurück
Oben