Hallo Community,
ich habe folgendes Problem.
Um Mengen eines Artikels auszuwerten habe ich die Folge Tabelle:
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)
Ziel sollte sein
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