Gruppieren über "Summe" von Subselect

Termos

Mitglied
Hallo Community,

ich habe folgendes Problem.

Um Mengen eines Artikels auszuwerten habe ich die Folge Tabelle:

Bauftrag Position Artikel Mengetb
1 3 A 122
1 3 A 140
2 1 B 210
2 1 B 88
2 1 B 40


Mein Problem ist das Summieren über den Artikelnamen, theoretisch müsste ich doch nur ein Subselect machen in dem ich auf den Artikelnamen alles aufaddiere?

Problem dabei ist das vorhandene Subselect:

(Tabelle vereinfacht Dargestellt)

SQL:
SELECT          	      
            lbl.bauftrag, lbl.position, lbl.ag,  
            wauftrag.aplan,  
            wauftrag.name,  
		    ag2.ende,  
			ag2.ag as ag2,  
		    ag2.menge_rest, 
		    mengetb = convert(int, isnull((	select sum(menge)
											from
												agprotokoll agp 
												join  
												agtransport agt on agt.bauftrag = agp.bauftrag and agt.position = agp.position and agt.ag = agp.ag  
											where  
												agp.bauftrag = lbl.bauftrag and  
												agp.position = lbl.position and  
												agp.ag = lbl.ag and  
												agp.artikel=lbl.artikel and  
												agt.startdatum = lbl.tbdatum and  
												agp.insdate > agt.startdatum and   
												isnull(agt.entnommen, 0) = 0  
											), 0)) 
FROM  
            lagerbelegung lbl 
            inner join  
            artikel behaelter on lbl.artikel = behaelter.artikel 
            inner join  
            agtransport agtr on agtr.seriennr = lbl.seriennr and agtr.bauftrag = lbl.bauftrag and agtr.position = lbl.position and agtr.ag = lbl.ag 
            inner join  
            wauftragpos ag on lbl.bauftrag = ag.bauftrag and lbl.position = ag.position and lbl.ag = ag.ag 
            inner join  
            wauftragpos ag2 on ag.bauftrag = ag2.bauftrag and ag.position = ag2.position 
            AND ag2.ag = (select min(ag) from wauftragpos where bauftrag = ag.bauftrag and position = ag.POsition and ag > ag.ag) 
            inner join 
            wauftrag on ag.bauftrag = wauftrag.bauftrag and ag.position = wauftrag.position 
            inner join  
            artikel on wauftrag.aplan = artikel.artikel
              
where       lbl.ag < (select top 1 x.ag  
					  from wauftragpos x  
					  where  
							x.status < 4 and  
							x.bauftrag = lbl.bauftrag and  
							x.position = lbl.position and  
							x.KOST = '110'   and  
							not exists (
										select *  
										from wauftragpos y  
										where y.bauftrag = x.bauftrag and y.position = x.position and y.ag > lbl.ag and y.ag < x.ag  
										)  
					  order by x.ag desc) 
			AND
			lbl.bereit = 1 and agtr.fertig = 1 and isnull(agtr.entnommen, 0) = 0 and ag.status in (3, 4)
			and isnull(agtr.anp_auslagerncharge, 0) = 0 
  
            group by 
              

            lbl.bauftrag, 
            lbl.position, 
            lbl.ag,  
            wauftrag.aplan,  
            wauftrag.name,  
		    ag2.ende,  
			ag2.ag,   
		    ag2.menge_rest,  
            mengetb,
            lbl.tbdatum,
            lbl.artikel




Ziel sollte sein


Bauftrag Position Artikel Mengetb
1 3 A 262
2 1 B 338
 
Am besten das Subselect in den FROM-Teil verschieben und wie jede andere Tabelle verwenden

SQL:
SELECT
    Bauftrag,
    Position,
    Artikel,
    SUM(Mengetb)
FROM xy
GROUP BY
    Bauftrag,
    Position,
    Artikel
 
Zuletzt bearbeitet von einem Moderator:
Zurück