>Se vado a fare la query ricercando il minimo numero,
>
>SELECT
>test.ID,
>Min(test.Numero)
>FROM
>test
>
>la query risultante è 1 - 111 e non 3 - 111 come dovrebbe essere
Ciao,
Che DBMS utilizzi? Quella query non è corretta dal punto di vista sintattico in quanto per definizione occorre specificare la clausola GROUP BY con tutte le colonne della select list alle quali non hai applicato una funzione di aggregazione.
SQL Server ad esempio restituisce il seguente errore:
Msg 8120, Level 16, State 1, Line 1
Column 'dbo.foo.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Per risolvere il tuo problema è sufficiente appoggiarsi ad una tabella derivata. In questo esempio per SQL Server 2008 farò uso di una CTE:
USE tempdb;
CREATE TABLE dbo.foo(
ID int NOT NULL,
Numero int NOT NULL
);
INSERT dbo.foo
VALUES (1, 999), (2, 888), (3, 111);
WITH CTE_GetMinValue(Numero) AS
(
SELECT MIN(Numero)
FROM dbo.foo
)
SELECT F.*
FROM dbo.foo AS F
JOIN CTE_GetMinValue AS CTE
ON F.Numero = CTE.Numero;
/* Output:
ID Numero
----------- -----------
3 111
(1 row(s) affected)
*/
DROP TABLE dbo.foo;
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/