Das 2.
SQL hab' ich oben überarbeitet.
Zitat:
Es sollten nur die Datensätze bleiben die ein "nein" enthalten und nur die, die ein "ja" enthalten, dann aber der Bestand = 0.
SQL-Code:
select * from (
SELECT
MaterialNr,
sum((Arbeitsbreite / 1000) * lfm) as BESTAND,
Bezeichnung,
Aufgebraucht
from (
SELECT
Materialrollen.[Mat-Nr] As MaterialNr,
Materialrollen.[Arb-Breite] As Arbeitsbreite,
Materialrollen.lfm,
[Material-Stamm].Bezeichnung,
'nein' as Aufgebraucht
FROM Materialrollen
LEFT JOIN [Material-Stamm] ON Materialrollen.[Mat-Nr] = [Material-Stamm].[Mat-Nr]
WHERE (
([Material-Stamm].[Lieferanten-Nr] = ' + Lieferantennr.Text + ')
AND ([Material-Stamm].aktuell= -1)
AND (Materialrollen.DatumAb is NULL)
AND (Materialrollen.[Arb-Breite] > 179)
)
UNION ALL
SELECT
Materialrollen.[Mat-Nr],
Materialrollen.[Arb-Breite],
Materialrollen.lfm,
[Material-Stamm].Bezeichnung,
'ja' as Aufgebraucht
FROM Materialrollen
LEFT JOIN [Material-Stamm] ON Materialrollen.[Mat-Nr] = [Material-Stamm].[Mat-Nr]
WHERE (
([Material-Stamm].[Lieferanten-Nr] = ' + Lieferantennr.Text + ')
AND ([Material-Stamm].aktuell= -1)
AND (Materialrollen.DatumAb is not NULL)
AND (Materialrollen.[Arb-Breite] > 179)
)
)
group by
MaterialNr,
Bezeichnung,
Aufgebraucht
)
where (Aufgebraucht = 'nein')
or (Aufgebraucht = 'ja' and Bestand = 0)
Und ja, das muss auch ohne dieses blöde Union all gehen.
Deshalb noch ein Versuch:
SQL-Code:
select * from (
SELECT
MaterialNr,
sum((Arbeitsbreite / 1000) * lfm) as BESTAND,
Bezeichnung,
Aufgebraucht
from (
SELECT
Materialrollen.[Mat-Nr] As MaterialNr
Materialrollen.[Arb-Breite] As Arbeitsbreite,
Materialrollen.lfm,
[Material-Stamm].Bezeichnung,
case Materialrollen.DatumAb when null then 'nein' else 'ja' end as Aufgebraucht
FROM Materialrollen
LEFT JOIN [Material-Stamm] ON Materialrollen.[Mat-Nr] = [Material-Stamm].[Mat-Nr]
WHERE (
([Material-Stamm].[Lieferanten-Nr] = ' + Lieferantennr.Text + ')
AND ([Material-Stamm].aktuell= -1)
AND (Materialrollen.[Arb-Breite] > 179)
)
)
group by
MaterialNr,
Bezeichnung,
Aufgebraucht
)
where (Aufgebraucht = 'nein')
or (Aufgebraucht = 'ja' and Bestand = 0)
Wenn das jetzt funktioniert, wird's ja schon fast wieder übersichtlich