Riportare solo il più alto

martedì 20 ottobre 2009 - 15.48

Blacky Profilo | Newbie

Ciao, sto lavorando ad una query che utilizzerò per delle tabelle sotto SQL Server2005.
Quello che devo fare sembra semplice ma a me non riesce, quindi chiedo un aiutino qui.

Ho una tabella chiamata tab1

ID | OGGETO | REV

1 GOLF 1
2 GONNA 1
3 GONNA 2
4 SLIP 1
5 SLIP 3
6 COLLANT 1

Mi deve ritornare:

ID | OGGETO | REV

1 GOLF 1
2 GONNA 2
5 SLIP 3
6 COLLANT 1

Quindi selezionare il capo di abbigliamento con la revisione più alta possibile.
E' possibile?
Ho provato con un:

select id, oggetto, max(rev) as rev from Tab1 ma non ci son riuscita...

Grazie!

lbenaglia Profilo | Guru

>Quindi selezionare il capo di abbigliamento con la revisione
>più alta possibile.
>E' possibile?
>Ho provato con un:
>
>select id, oggetto, max(rev) as rev from Tab1 ma non ci son riuscita...

Ciao Francesca,

Per ottenere il risultato che chiedi devi ricorrere ad una tabella derivata.
Nel seguente esempio utilizzerò una Common Table Expression:

USE tempdb; CREATE TABLE dbo.foo( ID int NOT NULL PRIMARY KEY, OGGETTO varchar(10) NOT NULL, REV int NOT NULL ); INSERT dbo.foo VALUES (1, 'GOLF', 1) , (2, 'GONNA', 1) , (3, 'GONNA', 2) , (4, 'SLIP', 1) , (5, 'SLIP', 3) , (6, 'COLLANT', 1); WITH CTE_GetKey(OGGETTO, REV) AS ( SELECT OGGETTO, MAX(REV) FROM dbo.foo GROUP BY OGGETTO ) SELECT F.* FROM dbo.foo AS F JOIN CTE_GetKey AS C ON F.OGGETTO = C.OGGETTO AND F.REV = C.REV ORDER BY F.ID; /* Output: ID OGGETTO REV ----------- ---------- ----------- 1 GOLF 1 3 GONNA 2 5 SLIP 3 6 COLLANT 1 (4 row(s) affected) */ DROP TABLE dbo.foo;

>Grazie!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Blacky Profilo | Newbie

Grazie Lorenzo.
Una tecnica che non conoscevo.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5