Avatar billede fxj Juniormester
14. februar 2006 - 23:59 Der 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

Håber der nogen der kan hjælpe ??
Avatar billede kjulius Novice
15. februar 2006 - 02:38 #1
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.
Avatar billede kjulius Novice
15. februar 2006 - 02:43 #2
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;
Avatar billede fxj Juniormester
24. februar 2006 - 00:46 #3
Hej kjulius

Jeg har set dit svar, men arbejder stadig på at få det til at virke
i min database ;-)
Avatar billede kjulius Novice
25. februar 2006 - 21:28 #4
Okay, hvad er problemet?
Avatar billede fxj Juniormester
25. marts 2006 - 10:34 #5
Har fået det til at virke nu. Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester