[MSSQL] Durchschnitt aus Ergebnistabelle

rrobbyy

Mitglied
Hallo zusammen,

ich habe eine Abfrage, die zu einem Auftrag alle Termine abfragt. Jeder Termin ist dabei eine eigene Zeile.
Zu weiteren Verarbeitung zeige ich auch den Auftragswert des Auftrages an, bspw. 100.000 Euro.

Wenn jetzt aber 10 Termine habe, und über die Pivot-Funktion von Excel auswerte, erhalten ich natürlich 10 x 100.000 Euro für diesen Auftrag.

Meine Idee ist, dass ich den Auftragswert pro Zeile durch die Anzahl der Ergebniszeilen dividiere, nur wie bekomme ich die Anzahl raus. Ein Group-By hilft mir hier anscheinend nicht weiter, da aus mir nicht bekannten Gründen die Berechnung den Auftragswert immer nur halbiert. Ich mach bestimmt wieder einen Denkfehler...

Code:
select distinct
PMSPROJEKTE.PROJEKTNR as ProjektNr
, PMSPROJEKTE.BEZEICHNUNG as Projektbezeichnung
, PMSSTATUS.BEZEICHNUNG as ProjektStatus
, ADRMITARBEITER.NAME as Projektleitung
, VORGANG.VORGANGNR as VorgangNr
, VORGANG.FREMDEAUFTNR as FremdeNummer
, VORGANG.BETREFF as VorgangBetreff
, VORGANG.AUFTRAGSWERT as Auftragswert
, VORGANG.BELEGART as Belegart
, TERDOKUMENT.TERMINART as Terminart
, TERSTATERMINARTEN.BEZEICHNUNG as Terminbezeichnung
, convert(date,TERDOKUMENT.DATUMVON) as Termin
, YEAR(TERDOKUMENT.DATUMVON) as TerminJahr
, MONTH(TERDOKUMENT.DATUMVON) as TerminMonat
, FDDATEN.INHALT as Klasse
, convert(date,VORGANG.LIEFTERMIN) as VertragLiefertermin
, YEAR(VORGANG.LIEFTERMIN) VertragLiefTerminJahr
, MONTH(VORGANG.LIEFTERMIN) VertragLiefTerminMonat
, ADRLB.BEZEICHNUNG as Lieferbedingung
, TERDOKUMENT.BEMERKUNG as Terminbemerkung
, AUFTRAGSWERT / COUNT(VORGANGNR) as AuftragswertAVG



from TERDOKUMENT 

inner join TERSTATERMINARTEN on TERSTATERMINARTEN.TERMINART = TERDOKUMENT.TERMINART
inner join VORGANG on VORGANG.VORGANGNR = TERDOKUMENT.VORGANG and VORGANG.FIRMA = TERDOKUMENT.FIRMA
inner join PMSOBJEKTORDNER on PMSOBJEKTORDNER.OBJEKTNR = VORGANG.ROWVORGANG and PMSOBJEKTORDNER.OBJEKTKZ = 'VOR'
inner join PMSPROJEKTE on PMSOBJEKTORDNER.ROWPROJEKT = PMSPROJEKTE.ROWPROJEKT
LEFT JOIN FDDATEN on VORGANG.ROWVORGANG = FDDATEN.SCHLUESSEL and FDDATEN.ROWFD = 13 and FDDATEN.ROWFDPOS = 169
LEFT JOIN PMSEINSTELLUNGEN on PMSPROJEKTE.ROWPROJEKT = PMSEINSTELLUNGEN.ROWPROJEKT
LEFT JOIN ADRMITARBEITER on PMSEINSTELLUNGEN.VB_BAULEITER = ADRMITARBEITER.MITARBEITER and PMSPROJEKTE.FIRMA = ADRMITARBEITER.FIRMA
LEFT JOIN PMSSTATUS on PMSPROJEKTE.ROWSTATUS = PMSSTATUS.ROWSTATUS 
LEFT JOIN ADRLB on VORGANG.LIEFBEDNR = ADRLB.LBNUMMER and VORGANG.FIRMA = ADRLB.FIRMA

group by VORGANGNR, PROJEKTNR, PMSPROJEKTE.BEZEICHNUNG, PMSSTATUS.BEZEICHNUNG, ADRMITARBEITER.NAME, VORGANG.FREMDEAUFTNR, VORGANG.BETREFF,VORGANG.AUFTRAGSWERT, VORGANG.BELEGART
, TERDOKUMENT.TERMINART, TERSTATERMINARTEN.BEZEICHNUNG, TERDOKUMENT.DATUMVON, FDDATEN.INHALT, VORGANG.LIEFTERMIN, ADRLB.BEZEICHNUNG, TERDOKUMENT.BEMERKUNG
 
Ok. ich habs doch hinbekommen..

für alle Interessierten:
ich habe nur folgende Zeile für die Berechnung hinzugefügt:

Code:
, (select Auftragswert / COUNT(Auftragswert) from Terminliste t where VORGANG.VORGANGNR= t.VorgangNr group by VorgangNr, Auftragswert) as AuftragswertAnteilig
 
Zurück