>In base al primo che estrae la query, cmq per me è irrilevante
>cioè puo essere estratto anche il secondo o il terzo
OK, osserva il seguente esempio:
USE tempdb;
CREATE TABLE dbo.Studenti(
StudenteID int NOT NULL IDENTITY PRIMARY KEY,
Nome varchar(10) NOT NULL,
Cognome varchar(10) NOT NULL,
Eta tinyint NOT NULL
);
INSERT dbo.Studenti VALUES('Pippo', 'Rossi', 23);
INSERT dbo.Studenti VALUES('Mario', 'Bruno', 23);
INSERT dbo.Studenti VALUES('Ciccio', 'Pasticcio', 17);
INSERT dbo.Studenti VALUES('Rosa', 'Verde', 55);
INSERT dbo.Studenti VALUES('Caio', 'Gracco', 55);
WITH CTE_GetStudent AS
(
SELECT MIN(StudenteID) AS StudenteID
FROM dbo.Studenti
GROUP BY Eta
)
SELECT S.*
FROM dbo.Studenti AS S
JOIN CTE_GetStudent AS CTE
ON S.StudenteID = CTE.StudenteID
ORDER BY S.StudenteID;
/* Output:
StudenteID Nome Cognome Eta
----------- ---------- ---------- ----
1 Pippo Rossi 23
3 Ciccio Pasticcio 17
4 Rosa Verde 55
(3 row(s) affected)
*/
DROP TABLE dbo.Studenti;
Se utilizzi una versione di SQL Server antecedente alla 2005, la CTE può essere sostituita da una tabella derivata.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org