scritto da | on , | Nessun commento

Un indicatore per valutare il servizio fornito al cliente è dato dalla puntualità delle consegne che indica la precisione a livello temporale della logistica. Per misurare la puntualità di consegna si confrontano due date: la data di consegna confermata presa dall’ordine e la data del documento di trasporto.
Per la nostra elaborazione partiamo da una tabella spedizioni in cui inseriamo le seguenti informazioni ricavate dagli ordini e dai DDT:
CLIENTE, ORDINE, CODICE, DATA CONSEGNA, DATA BOLLA

Per prima cosa calcoliamo la differenza tra le due date:

SELECT spedizioni.ORDINE, spedizioni.CODICE, spedizioni.DACO, spedizioni.DABO, IIf([DABO]=0,IIf([DACO]>=DATE(),0,DATE()-[DACO]),[DABO]-[DACO]) AS GG, IIf([GG]<-5,"ANTICIPO",IIf([GG]<5,"PUNTUALE","RITARDO")) AS CHK
FROM spedizioni
WHERE (((spedizioni.DACO)<=#1/31/2008#));

A questo punto incrociamo la query puntualità con la tabelle delle classi di puntualità cosi definita:

ORD Classe inf sup
1 <=-30 -9000 -30
2 ]-30;-7] -29 7
3 ]-7;-4] -6 -4
4 ]-4;0] -3 0
5 ]0;4] 1 4
6 ]4;7] 5 7
7 ]7;14] 8 14
8 ]14;30] 15 30
9 ]30;60] 31 60
10 ]60;180] 61 180
11 >=180 181 9000
SELECT Puntualità.CLIENTE, Puntualità.CODICE, classi.Classe
FROM Puntualità, classi
WHERE (((Puntualità.GG) BETWEEN [classi]![inf] AND [classi]![sup]));

Ora raggruppiamo per classie e clienti la query precedente:

SELECT classi.ORD, classi.Classe, classi.Cliente, COUNT(CP00.CODICE) AS [N RIGHE]
FROM CP00 INNER JOIN classi ON CP00.Classe = classi.Classe
GROUP BY classi.ORD, classi.Classe;

In questo modo abbiamo ottenuto una statistica per classi di puntualità e cliente, sulla base della prima query è possibile costruire una statistica per mese in questo modo con tre query a cascata (pm00, pm01, puntualità mensile):

pm00

SELECT CLng(Format([DACO],"yyyy")) AS ANNO, CLng(Format([DACO],"m")) AS MES, IIf([CHK]="ANTICIPO","PUNTUALE",[CHK]) AS CK, Puntualità.CODICE
FROM Puntualità;

pm01

TRANSFORM COUNT(pm00.CODICE) AS ConteggioDiCODICE
SELECT pm00.ANNO, ([MES]) AS MESE, COUNT(pm00.CODICE) AS TOT
FROM pm00
GROUP BY pm00.ANNO, ([MES])
PIVOT pm00.CK;

Puntualità mensile

SELECT pm01.MESE, [PUNTUALE]/[TOT] AS PUN, [RITARDO]/[TOT] AS RIT
FROM pm01;

Lascia un Commento

News