Hallo zusammen,
ich habe ein statemant, welches ich gern mit der where klausel richtig bedienen möchte.
Aufbau:
prod.jahr und prod.monat können null sein oder einen wert, genauso fz.jahr und fz.monat. aber wenn ich das oben so eingebe, dann erhalte ich nur datensätze, wo alle 4 spalten einen wert haben, aber nicht nur zwei (wenn fz.jahr gefüllt ist, ist es auch fz.monat, genau so ist es bei prod.jahr und prod.monat), aber er zeigt mir nicht die datensätze an, wo prod jahr und monat gefüllt sind, aber fz.jahr und monat leer ist.
Hab ich einen Fehler drin?
ich habe ein statemant, welches ich gern mit der where klausel richtig bedienen möchte.
Aufbau:
SQL:
select p.personalnr, trim(p.nachname) as nachname, trim(p.vorname) as vorname, round(sum(prod.stunden),2) as gesamtstunden, count(prod.stunden) + fz.fztage as tage, prod.arbzeitwch
from personal p
left join (
select aw.personalnr, k.kundennr, k.kundname, k.disponent, aw.stunden, aw.jahr, aw.monat, ep.arbzeitwch
from einspers ep
inner join auswlohn aw on aw.personalnr = ep.personalnr and aw.von >= date(extract(year from ep.datumvon) || '-' || extract(month from ep.datumvon) || '-01')
and aw.bis <= date(extract(year from ep.datumvon) || '-' || extract(month from ep.datumvon) || '-01') + interval '1 month' - interval '1 day' and aw.einsortnr = ep.einsortnr
inner join auftrag a on a.auftragnr = aw.auftragnr
inner join kunden k on k.kundennr = a.kundennr
where aw.lohnartnr = 101 and aw.verwendung = 'F'
) prod on p.personalnr = prod.personalnr
left join (
select fz.personalnr, sum((fz.datumbis::DATE - fz.datumvon::DATE) +1) as fztage, extract(year from fz.datumvon) as jahr, extract(month from fz.datumbis) as monat
from einspers fz
where fz.kb in ('FS', 'V')
group by fz.personalnr, extract(year from fz.datumvon), extract(month from fz.datumbis)
) fz on fz.personalnr = p.personalnr
where p.geschst = 1 and p.eintritt1 is not null and prod.jahr in (2023, null) and prod.monat in (7, null) and fz.jahr in (2023, null) and fz.monat in (7, null)
group by p.personalnr, trim(p.nachname), trim(p.vorname), fz.fztage, prod.arbzeitwch
prod.jahr und prod.monat können null sein oder einen wert, genauso fz.jahr und fz.monat. aber wenn ich das oben so eingebe, dann erhalte ich nur datensätze, wo alle 4 spalten einen wert haben, aber nicht nur zwei (wenn fz.jahr gefüllt ist, ist es auch fz.monat, genau so ist es bei prod.jahr und prod.monat), aber er zeigt mir nicht die datensätze an, wo prod jahr und monat gefüllt sind, aber fz.jahr und monat leer ist.
Hab ich einen Fehler drin?