Selezionare intervallo record in base a data decrescente

di il
11 risposte

Selezionare intervallo record in base a data decrescente

Buongiorno, ho una tabella che registra le attività dei dipendenti in cui sono inseriti i campi:
-id (pk)
-data
-Dipendente (testo)
-incarico (numerico)
-straordinario (numerico)
-punteggio (somma di incarico e straordinario)

Ogni giorno, ad ogni dipendente viene assegnato un punteggio in base all'attività svolta. Io ho la necessità di visualizzare gli ultimi "X" giorni dei vari dipendenti per poterne effettuare la somma. Per l'ultima parte penso di avere risolto con una query con raggruppamento, ma non riesco a filtrare l'intervallo che mi serve.
Ho provato la funzione "TOP",ma funziona solo con un dipendente alla volta.

Come faccio a selezionare un intervallo di giorni ordinando la data decrescente?

Grazie.

11 Risposte

  • Re: Selezionare intervallo record in base a data decrescente

    Cantack ha scritto:


    ...
    Ho provato la funzione "TOP",ma funziona solo con un dipendente alla volta.
    Come l'hai usata questa funzione TOP? (cioè mostra quello che hai scritto)
  • Re: Selezionare intervallo record in base a data decrescente

    SELECT TOP 3 Registro.ID, Registro.data, registro.dipendente, registro.incarico, registro.straordinario, registro.punteggio
    FROM registro
    WHERE (((registro.dipendente) like "*nomedipendente*))
    ORDER BY registro.data DESC;
  • Re: Selezionare intervallo record in base a data decrescente

    Cantack ha scritto:


    Come faccio a selezionare un intervallo di giorni ordinando la data decrescente?
    Ti serve sicuramente impostare il Criterio su Data così:
    Between [Digita Data Inizio] And [Digita Data Fine]
    In questo modo restringi il tuo recordset di azione.
    Poi applichi la Somma sul campo Punteggio e (credo) dovrai fare il Raggruppamento sui restanti campi.
  • Re: Selezionare intervallo record in base a data decrescente

    Purtroppo non posso filtrare le date perché i valori vengono conteggiati solo in caso di lavoro. In caso di assenza il valore inserito viene ignorato per cui l'intervallo di date non è uguale per tutti.
  • Re: Selezionare intervallo record in base a data decrescente

    Non ho capito il discorso "assenza". Fai un esempio esplicito. Indipendentemente dagli intervalli "irregolari" a te serve la SOMMA del campo Punteggio in un arco di tempo stabilito dalla Between...And.
  • Re: Selezionare intervallo record in base a data decrescente

    OsvaldoLaviosa ha scritto:


    Non ho capito il discorso "assenza". Fai un esempio esplicito. Indipendentemente dagli intervalli "irregolari" a te serve la SOMMA del campo Punteggio in un arco di tempo stabilito dalla Between...And.
    Il campo incarico ha un valore 100 nel caso in cui il dipendente non sia al lavoro (non ho messo un campo vuoto per evitare problemi), per cui il valore di quel giorno non deve essere conteggiato:
    ___DATA___DIPENDENTE___INCARICO____STRAORDINARIO___PUNTEGGIO
    25/05/2019 ROSSI MARIO_____2__________2____________4
    24/05/2019 ROSSI MARIO_____4__________1____________5
    23/05/2019 ROSSI MARIO_____100________0____________100 (il record viene escluso)
    22/05/2019 ROSSI MARIO_____2__________2____________4
    21/05/2019 ROSSI MARIO_____2__________2____________4
    25/05/2019 VERDI PAOLO_____2__________2____________4
    24/05/2019 VERDI PAOLO_____1__________2____________3
    23/05/2019 VERDI PAOLO_____3__________2____________5
    22/05/2019 VERDI PAOLO_____3__________2____________5
    21/05/2019 VERDI PAOLO_____2__________2____________4


    Se devo tenere conto degli ultimi 3 giorni lavorati di ROSSI, prenderò in considerazione i giorni 25, 24 e 22;
    Se devo tenere conto degli ultimi 3 giorni lavorati di VERDI, prenderò in considerazione i giorni 25, 24 e 23.
    Il risultato poi viene lavorato da una query di raggruppamento.

    Avevo affrontato questo problema qualche tempo fa con excel (gruppo di Facebook), ma i risultati non erano soddisfacenti.
  • Re: Selezionare intervallo record in base a data decrescente

    Qualche idea? Al limite anche migrare e/o integrare con excel?
  • Re: Selezionare intervallo record in base a data decrescente

    Puoi continuare ad usare Excel se ti trovi meglio... Access è diverso e va imparato come strumento... Non si fanno mischiotti.

    Nella WHERE devi mettere in AND logico Incarico<>100
  • Re: Selezionare intervallo record in base a data decrescente

    Non sono il mio forte i Raggruppamenti e co., ma sicuramente includi nella tua query il Criterio sul campo Incarico
    <>100. In questo modo ti assicuri che i primi 3 record sono quelli che ti interesseranno.
    Ora, come prelevare/filtrare i soli 3 record di Rossi, Verdi ecc...faccio fatica. Forse ci vedrei un ciclo di 3 del recordset "filtrato", caso per caso, ma occorre che ti ingegni un po' e fai varie prove.
  • Re: Selezionare intervallo record in base a data decrescente

    Non c'è nessun raggruppamento in realtà, anche se si usa... per ottenere i primi 3 record per ogni nominativo si usano le tabelle derivate...

    Questo per ottenere il massimo del prezzo di ogni prodotto... [Code] Select T1.Provenienza,MAXP.IdProdotto,MAXP.Massimo From T1 RIGHT JOIN (select IdProdotto, Max(Prezzo) as Massimo From T1 Group By IdProdotto) AS MAXP ON T1.IdProdotto=MAXP.IdProdotto AND T1.Prezzo=MAXP.Massimo Ovviamente deve essere modificata usando TOP 3...
  • Re: Selezionare intervallo record in base a data decrescente

    Aggiornamento...
    Ho ripreso in mano il database e ne ho modificato la struttura semplificandola un po' (spero). Adesso ho il campo ID (che identifica il dipendente), un campo data e uno punteggio. Il numero dei campi data NON è uguale per tutti gli ID, da qui la necessità di considerare gli ultimi tre (in base alla data) per ognuno. Ho cercato le tabelle derivate e ho trovato il tuo post alex, ma non riesco ad applicarlo al mio caso; saresti così gentile da postarmi un codice che si adatti alla mia situazione?
    Sto cercando di capire come applicare il suggerimento di Osvaldo (Forse ci vedrei un ciclo di 3 del recordset "filtrato", caso per caso,...), ma non vedo ancora la luce in fondo al tunnel.

    Grazie a tutti.
Devi accedere o registrarti per scrivere nel forum
11 risposte