>... vorrei, se possibile, eseguire un'unica query che mi restituisca
>il record con il valore massimo di Prg e il valore massimo di
>PrgElementi. Per quest'ultimo la ricerca deve essere limitata
>ai records con Prg = Max(Prg).
>In sostanza mi deve restituire l'ultimo record. Attualmente visto
>che Prg e PrgElementi sono in chiave leggo l'ultimo record ma
>ero comunque curioso di capire se si potrebbe fare con una query.
Ciao Denis,
Una soluzione semplice che mi viene in mente consiste nel restituire la riga che contiene i valori di Prg e PrgElementi massimi:
USE tempdb;
CREATE TABLE dbo.BufferLinea1(
Prg smallint NOT NULL CONSTRAINT DF_BufferLinea1_Prg DEFAULT (0),
PrgElementi tinyint NOT NULL CONSTRAINT DF_BufferLinea1_PrgElementi DEFAULT (1),
Lista char(4) COLLATE Latin1_General_CS_AS NULL,
Consegna decimal(5, 0) NULL,
NumeroColli decimal(5, 0) NULL,
Profondita float NOT NULL CONSTRAINT DF_BufferLinea1_Profondita DEFAULT (0),
CONSTRAINT PK_BufferLinea1 PRIMARY KEY(Prg, PrgElementi)
);
INSERT dbo.BufferLinea1 VALUES (1, 1, '111', 1, 234, 400);
INSERT dbo.BufferLinea1 VALUES (2, 1, '111', 2, 345, 400);
INSERT dbo.BufferLinea1 VALUES (2, 2, '111', 2, 467, 400);
INSERT dbo.BufferLinea1 VALUES (2, 3, '111', 2, 321, 400);
INSERT dbo.BufferLinea1 VALUES (3, 1, '231', 5, 213, 400);
INSERT dbo.BufferLinea1 VALUES (3, 2, '231', 5, 543, 400);
SELECT TOP(1) *
FROM dbo.BufferLinea1
ORDER BY Prg DESC, PrgElementi DESC;
/* Output:
Prg PrgElementi Lista Consegna NumeroColli Profondita
------ ----------- ----- --------- ------------ -----------
3 2 231 5 543 400
(1 row(s) affected)
*/
DROP TABLE dbo.BufferLinea1;
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/