>mi servirebbe una query che mi restituisse tutti i tipi di IDdis
>una sola volta, e per ogni IDdis selezionati il record con tutti
>i campi aventi IDmex piu' alto
Ciao Andrea,
Per ottenere quel risultato devi ricorrere ad una CTE oppure ad una tabella derivata che restituisca il massimo IDmex per ogni IDdis ed eseguire una INNER JOIN con la tabella base per recuperare i valori delle altre colonne:
USE tempdb;
CREATE TABLE dbo.foo(
IDmex int NOT NULL PRIMARY KEY,
IDdis int NOT NULL,
campo1 char(1) NOT NULL,
campo2 char(1) NOT NULL,
campo3 char(1) NOT NULL,
campo4 char(1) NOT NULL
);
INSERT dbo.foo VALUES
(1, 2, 'a', 'a', 'a', 'a')
, (2, 2, 'b', 'b', 'b', 'b')
, (3, 3, 'c', 'c', 'c', 'c')
, (4, 4, 'd', 'd', 'd', 'd')
, (5, 4, 'e', 'e', 'e', 'e');
WITH CTE_GetKey(IDdis,IDmex) AS
(
SELECT IDdis, MAX(IDmex)
FROM dbo.foo
GROUP BY IDdis
)
SELECT F.*
FROM dbo.foo AS F
JOIN CTE_GetKey AS C
ON F.IDmex = C.IDmex
AND F.IDdis = C.IDdis
ORDER BY C.IDmex;
/* Output:
IDmex IDdis campo1 campo2 campo3 campo4
----------- ----------- ------ ------ ------ ------
2 2 b b b b
3 3 c c c c
5 4 e e e e
(3 row(s) affected)
*/
DROP TABLE dbo.foo;
>Vi ringrazio se sapermi dare una risposta anche se negativa.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org