Ciao, sono nuovo.
Ho bisogno del vostro cortese aiuto per migliorare un codice SQL che gira su un server MS-SQL.
Ho una tabella chiamata TEMP10 con quatto campi in cui per ciascun giorno ci sono valori per due UNIT (1 e 2).Ciascuna UNIT ha 6 SUBUNIT a ci corrisponde un valore:
DAY UNIT SUBUNIT VALUE
22/10/2018 unit1 1 40
22/10/2018 unit1 6 38
22/10/2018 unit2 3 37
22/10/2018 unit2 6 36
22/10/2018 unit2 5 35
22/10/2018 unit2 1 34
22/10/2018 unit1 3 31
22/10/2018 unit2 2 29
22/10/2018 unit2 3 26
22/10/2018 unit1 5 25
22/10/2018 unit1 4 24
22/10/2018 unit1 2 22
Con una query mi piacerebbe che per ciascun giorno, per ciascuna UNIT mi restituisse i primi 3 piu’ alti valori di VALUE, non importa di quale SUBUNIT.
Al momento lo sto facendo a mano con Excel e da inesperto ho provato invano di implementarlo direttamente in SQL. Ho provato il semplice:
SELECT TOP 3 * FROM TEMP10 ORDER BY VALUE DESC
Che mi restituisce:
DAY UNIT SUBUNIT VALUE
22/10/2018 unit1 1 40
22/10/2018 unit1 6 38
22/10/2018 unit2 3 37
Invece desidererei che mi restituisse i primi piu’ alti valori per ciacuna UNIT, quindi in questo caso un output con 6 righe e non 3. Cioe’ cosi’:
DAY UNIT SUBUNIT VALUE
22/10/2018 unit1 1 40
22/10/2018 unit1 6 38
22/10/2018 unit1 3 31
22/10/2018 unit2 3 37
22/10/2018 unit2 6 36
22/10/2018 unit2 5 35
Ho fatto un po' di ricerche in retee innumerevoli prove ma proprio non ci riesco.
Grazie a chi puo' darmi una mano.
Ciro