Newsgroup: it.comp.appl.access
Titolo: Ultimi n record per ogni prodotto.

Buongiorno a tutti.
Avrei la necessità di estrarre da una tabella MOVIMENTI, gli ultimi  N 
movimenti (in senso cronologico) effettuati sui singoli prodotti:
 
la tabella ha i seguenti campi
 
id_cont contatore
Prodotto testo
TipoM SI/NO
quantita numerico
data data
 
potete darmi una indicazione ?
 
Grazie 
 
 

 movimenti (in senso cronologico) effettuati sui singoli prodotti:
 
 
Più o meno cosi:
 
SELECT TOP (N)
movimenti.id
, 
movimenti.Prodotto,
movimenti.TipoM,
movimenti.quantita,
movimenti.data
FROM
movimenti
ORDER BY 
data DESC
;
 
se hai date duplicate allora potresti avere dei problemi
nel senso che ( se ricordo bene ) ti preleva tutte le 
date uguali anche se superi il numero N
 
.

 .
 
Secondo me non va bene... questa ottiene N elementi in generale non i primi N di di ogni SINGOLO PRODOTTO... come da richiesta.
 
Questo è un esempio per estrarre il MAX di ogni Prodotto..., va riadattata con il TOP N per ottenere quanto richiesto:
 
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
 
 
@Alex

 .
 
Secondo me non va bene... questa ottiene N elementi in generale non i primi 
N di di ogni SINGOLO PRODOTTO... come da richiesta.
 
Questo č un esempio per estrarre il MAX di ogni Prodotto..., va riadattata 
con il TOP N per ottenere quanto richiesto:
 
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
 
 
@Alex
 
Grazie ho testato la query e effettivamente mi tira fuori la massima 
quantitą per ogni singolo prodotto.
Perņ io vorrei tirare fuori , sempre per ogni singolo prodotto, gli ultimi 
(per esempio) 2 movimenti di acquisto/vendita:
 
  T1 codice valore Data Tipo
      PENNA 7 06/08/2015 A
      MATITA 5 17/08/2015 A
      GOMMA 6 08/08/2015 V
      PENNA 4 11/08/2015 V
      MATITA 9 12/08/2015 A
      GOMMA 1 14/08/2015 V
      GOMMA 8 13/08/2015 A
      MATITA 2 15/08/2015 V
      PENNA 3 16/08/2015 A
      MATITA 2 07/08/2015 V
      PENNA 10 09/08/2015 A
      GOMMA 11 10/08/2015 A
 
 

Bene... fai qualche test di Modifica... per estrarre N elementi basta usare TOP N
giocaci e divulga i risultati.
 
@Alex

 ha scritto nel messaggio 
news:6931352b-9e3d-4476...@googlegroups.com...

allora, con la tua ispirazione e cercando altre info in rete ho tirato fuori 
questa cosa qui...
 
SELECT Tabella3.codice, Tabella3.valore, Tabella3.Data, Tabella3.Tipo
FROM Tabella3
WHERE (((Tabella3.Data) In (Select TOP 3 Data
                           FROM Tabella3 AS T
                           WHERE T.codice=Tabella3.codice
                           ORDER BY Data DESC)));
 
funziona...
 
ma ci mette una marea di tempo..per una tabella di 380.000 record...
si puo ottimizzare ?
 
 

 ha scritto nel messaggio 
news:mrf6va$vgk$1...@speranza.aioe.org...

Risolto con l'indicizzazione dei codici....
grazie per il supporto.