Ragazzi premetto che sono molto inesperto di SQL, vorrei chiedervi se qualcuno può aiutarmi ad impostare una query che dati i seguenti record:
cod_mart bar_code marchio val_ult_car rag_soc qta_esistente data_ord num_ord
1177002 80010449 SAICAF 1.5513 SAICAF S.P.A. 340 02/12/2015 14
1177002 80010449 SAICAF 1.5513 SAICAF S.P.A. 340 05/12/2015 18
1177002 80010449 SAICAF 1.5513 SAICAF S.P.A. 340 10/12/2015 21
1177002 80010449 SAICAF 1.5513 SAICAF S.P.A. 340 23/12/2015 35
1177003 8001686000430 SAICAF 1.3112 SAICAF S.P.A. 220 02/12/2015 14
1177003 8001686000430 SAICAF 1.3112 SAICAF S.P.A. 220 05/12/2015 18
1177003 8001686000430 SAICAF 1.3112 SAICAF S.P.A. 220 10/12/2015 21
RISULTATO:
1177003 8001686000430 SAICAF 1.3112 SAICAF S.P.A. 220 05/12/2015 18
1177002 80010449 SAICAF 1.5513 SAICAF S.P.A. 340 05/12/2015 18
1177002 80010449 SAICAF 1.5513 SAICAF S.P.A. 340 10/12/2015 21
1177003 8001686000430 SAICAF 1.3112 SAICAF S.P.A. 220 10/12/2015 21
1177002 80010449 SAICAF 1.5513 SAICAF S.P.A. 340 23/12/2015 35
deve restituire le tre date più recenti, delle ultime tre date tutte le informazioni(cod_mart,barcode……..), ovviamente i fornitori (rag_soc)sono N e deve retituirli tutti.
Questa in oracle funziona:
SELECT * FROM (
SELECT cod_mart,bar_code,marchio,val_ult_car,rag_soc,qta_ esistente,data_ord,num_ord
RANK() OVER (PARTITION BY rag_soc ORDER BY data_ord) RANK
FROM SCHEDA)
WHERE RANK <= 3;
Ma in SQL??
Grazie