INNER JOIN mit Unterabfrage

chrisi303

Aktiver Benutzer
Beiträge
32
Hallo Ich habe ein Problem mit einer Abfrage mach ich was bei der Notation falsch wahrscheinlich ;-)

Code:
SELECT
b.* , summe
  FROM [eazybusiness].[dbo].[tBestellung] as b
  INNER JOIN  (       
                SELECT  sum([tbestellpos].[fVKNetto] * [tbestellpos].[nAnzahl] )
                FROM [eazybusiness].[dbo].[tbestellpos]
                where  [tbestellpos].[nType] = 1
                AND  [tbestellpos].[fVKPreis] >0
                ) as summe
  on b.[kBestellung] = [tbestellpos].[tBestellung_kBestellung]

  WHERE MONTH(b.[dErstellt]) = 2
  and   YEAR(b.[dErstellt]) = 2016
  and b.[nStorno] = 0
  and b.[cType] = 'B'

Fehler:
Meldung 8155, Ebene 16, Status 2, Zeile 11
Kein Spaltenname wurde für die Spalte 1 von 'summe' angegeben.
Meldung 4104, Ebene 16, Status 1, Zeile 11
Der mehrteilige Bezeichner 'tBestellPos.tBestellung_kBestellung' konnte nicht gebunden werden.
Meldung 207, Ebene 16, Status 1, Zeile 3
Ungültiger Spaltenname 'summe'.

-definiere ich nicht mit as "summe"?
-'tBestellPos.tBestellung_kBestellung' existiert?

hat jemand eine Idee?
 
Werbung:
Also dein Subselect INNER JOIN (..) ist eine Tabelle die "summe" als Alias bekommt. In der ON-Bedingung vom Join heist die Tabelle dann schon "summe", du kannst also nicht auf [tbestellpos].[tBestellung_kBestellung] joinen. Außerdem muss der Subselect natürlich auch die Spalte tBestellung_kBestellung zurück geben, da wäre ein GROUP BY im Subselect auf tBestellung_kBestellung vermutlich angebracht.
 
mmm super vielen Danke so klappt es
Code:
SELECT summe.wert , b.tBenutzer_kBenutzer
  FROM [eazybusiness].[dbo].[tBestellung] as b
  INNER JOIN  (    SELECT sum([tbestellpos].[fVKNetto] * [tbestellpos].[nAnzahl] ) as wert, [tBestellung_kBestellung] as bnummer
    
            FROM [eazybusiness].[dbo].[tbestellpos]
             Where  [tbestellpos].[nType] = 1
             AND  [tbestellpos].[fVKPreis] >0
            GROUP BY [tBestellung_kBestellung]
                ) as summe
  on b.[kBestellung] = summe.bnummer

  WHERE MONTH(b.[dErstellt]) = 2
  and   YEAR(b.[dErstellt]) = 2016
  and b.[nStorno] = 0
  and b.[cType] = 'B'
jetzt bekomme ich eine spalte: den wert des auftrages und den benutzer für den gesamten Monat
Wie kann ich jetzt weitere machen wenn ich den gesamten Auftragswert pro Benutzer pro Monat abfragen möchte?
so einfach wie GROUP BY b.tBenutzer_kBenutzer ist es ja nicht
 
das Ergebnis der Abfrage stimmt mit dem aus der Warenwirtschaft überein (habe es nach gerechte) das ist schon mal super.
das Ergebnis jeder Auftrag (summe und Verkäufer) des Monats .
wert tBenutzer_kBenutzer
147.35179800000 9
47.00000000000 9
251.26050420168 10
596.46472000000 9
1180.25288652000 9
1165.80006000000 9
1027.60204800000 11
176.42220000000 9
163.00860000000 21
628.19577600000 9
9.89920000000 10
8.36134453782 10
...
jetzt Interessent mich aber nur die Summe aller Aufträge pro Verkäufer (Umsatz proVerkäufer)
 
Asche auf mein Haupt, es war so einfache.

SELECT sum(summe.wert) as gesamt , b.tBenutzer_kBenutzer as verkaeufer
....
GROUP BY b.tBenutzer_kBenutzer
 
Werbung:
Zurück
Oben