14. februar 2006 - 23:59Der er
4 kommentarer og 1 løsning
Udskrift med faktiske tal sammen med forventede tal
Jeg har brug for hjælp:
Jeg har en tabel med faktiske forsendelser, der indeholder: - Afsendelsesdato - fragtbrevsnummer - modtagerby - antal kg - antal paller type 1 - antal paller type 2 - antal paller type 3
Den anden tabel med forventede mængder indeholder: - start afsendelsdato - slut afsendelsesdato - forventet antal kg - forventet antal palle type 1 - forventet antal paller type 2 - forventet antal palle type 3
Min statistik skal dannes på ugebasis og jeg har fået lavet en rapport så jeg kan få vist faktiske data ved at indtaste start- og slutdato for rapporten. Rapporten tæller sammen på byniveau ugevis - så langt så godt
Jeg vil gerne efter hver ugeresultat i raporten have vist tallene fra den forventede mængde, så man kan se forskellen mellem sendt mængde og forventet sendt mængde.
Forskellen kan kun beregnes på totalen af den sendte mængde.
F.eks. Sendt mængde palletype 1 = 10 Forventet mængde palletype 2 = 12 Forskel = 2
Det kan gøres på flere måder, men jeg favoriserer at gøre det på DB-niveau:
SELECT f.Startdato, f.Slutdato, 'D' AS Infotype, a.Modtagerby, Sum(a.Kg) AS Kg, Sum(a.[Paller type 1]) AS [Paller type 1], Sum(a.[Paller type 2]) AS [Paller type 2], Sum(a.[Paller type 3]) AS [Paller type 3], Null AS [Forventede Kg], Null AS [Forventede paller type 1], Null AS [Forventede paller type 2], Null AS [Forventede paller type 3], Null AS [Afvigelse Kg], Null AS [Afvigelse paller type 1], Null AS [Afvigelse paller type 2], Null AS [Afvigelse paller type 3] FROM Afsendt a, [Forventet sendt] f WHERE (((a.Forsendelsesdato) Between [Startdato] And [Slutdato])) GROUP BY f.Startdato, f.Slutdato, 'D', a.Modtagerby, Null, Null, Null, Null UNION ALL SELECT f.Startdato, f.Slutdato, 'F', Null, Sum(a.Kg), Sum(a.[Paller type 1]), Sum(a.[Paller type 2]), Sum(a.[Paller type 3]), f.Kg, f.[Paller type 1], f.[Paller type 2], f.[Paller type 3], Sum(a.Kg) - f.Kg, Sum(a.[Paller type 1]) - f.[Paller type 1], Sum(a.[Paller type 2]) - f.[Paller type 2], Sum(a.[Paller type 3]) - f.[Paller type 3] FROM Afsendt a, [Forventet sendt] f WHERE (((a.Forsendelsesdato) Between [Startdato] And [Slutdato])) GROUP BY f.Startdato, f.Slutdato, 'F', Null, f.Kg, f.[Paller type 1], f.[Paller type 2], f.[Paller type 3] ORDER BY Startdato, Slutdato, Infotype, Modtagerby;
Den viste forespørgsel vil returnere sumrecords for hver by pr. uge, efterfulgt af en opsummering pr. uge, som også beregner afvigelsen i forhold til det forventede.
Det viser sig, at man faktisk ikke behøver at angive felter, som kun returnerer en null-værdi i GROUP BY sektionen hvis det står til sidst, så dem fjerner vi lige:
SELECT f.Startdato, f.Slutdato, 'D' AS Infotype, a.Modtagerby, Sum(a.Kg) AS Kg, Sum(a.[Paller type 1]) AS [Paller type 1], Sum(a.[Paller type 2]) AS [Paller type 2], Sum(a.[Paller type 3]) AS [Paller type 3], Null AS [Forventede Kg], Null AS [Forventede paller type 1], Null AS [Forventede paller type 2], Null AS [Forventede paller type 3], Null AS [Afvigelse Kg], Null AS [Afvigelse paller type 1], Null AS [Afvigelse paller type 2], Null AS [Afvigelse paller type 3] FROM Afsendt a, [Forventet sendt] f WHERE (((a.Forsendelsesdato) Between [Startdato] And [Slutdato])) GROUP BY f.Startdato, f.Slutdato, 'D', a.Modtagerby UNION ALL SELECT f.Startdato, f.Slutdato, 'F', Null, Sum(a.Kg), Sum(a.[Paller type 1]), Sum(a.[Paller type 2]), Sum(a.[Paller type 3]), f.Kg, f.[Paller type 1], f.[Paller type 2], f.[Paller type 3], Sum(a.Kg) - f.Kg, Sum(a.[Paller type 1]) - f.[Paller type 1], Sum(a.[Paller type 2]) - f.[Paller type 2], Sum(a.[Paller type 3]) - f.[Paller type 3] FROM Afsendt a, [Forventet sendt] f WHERE (((a.Forsendelsesdato) Between [Startdato] And [Slutdato])) GROUP BY f.Startdato, f.Slutdato, 'F', Null, f.Kg, f.[Paller type 1], f.[Paller type 2], f.[Paller type 3] ORDER BY Startdato, Slutdato, Infotype, Modtagerby;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.