>ora io, devo estrarre da tale tabella (query) il record con il
>valore numeroAttivita piu basso, esempio:
>-------------
>pippo - 3
>pluto - 7
>alex - 1
>-------------
>
>io devo estrapolare: alex - 1
Osserva il seguente esempio:
USE tempdb;
CREATE TABLE dbo.foo(
nome varchar(10) NOT NULL,
numeroAttivita int NOT NULL
);
INSERT dbo.foo
VALUES ('pippo', 3)
, ('pluto', 7)
, ('alex', 1);
WITH CTE_GetMinActivities(ActivitiesNo) AS
(
SELECT MIN(numeroAttivita)
FROM dbo.foo
)
SELECT F.*
FROM dbo.foo AS F
JOIN CTE_GetMinActivities AS A
ON F.numeroAttivita = A.ActivitiesNo;
/* Output:
nome numeroAttivita
---------- --------------
alex 1
(1 row(s) affected)
*/
DROP TABLE dbo.foo;
Pertanto la tua query dovrebbe essere qualcosa del genere (ovviamente non posso provarla dato che non è possibile riprodurla con i dati che hai postato):
WITH CTE_Users(Utente, NumeroAttivita) AS
(
SELECT U1.Utente, COUNT(*)
FROM dbo.tabellaUtente AS U1
JOIN dbo.Utenti AS U2
ON U1.Utente = U2.Utente
WHERE U2.Ruolo = 'dipendente'
GROUP BY U1.Utente
),
CTE_GetMinActivities(ActivitiesNo) AS
(
SELECT MIN(NumeroAttivita)
FROM CTE_Users
)
SELECT U.*
FROM CTE_Users AS U
JOIN CTE_GetMinActivities AS A
ON U.NumeroAttivita = A.ActivitiesNo;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/