Buenas tardes queridos lectores, el día de hoy les traigo este post, y hablaremos sobre como guardar en una variable el resultado de una consulta con la clausula TOP, en ocasiones nos resultará útil una consulta de este tipo, y con mayor razón guardarla en una variable, aunque no siempre es tan sencillo.
Para el siguiente ejemplo consideremos la siguiente base de datos
CREATE TABLE PRUEBAS
(ID INT IDENTITY,
CODIGO VARCHAR(MAX),
NOMBRE VARCHAR(MAX),
APELLIDO VARCHAR(MAX),
MONTO DECIMAL(8,2))
INSERT INTO PRUEBAS (CODIGO, NOMBRE, APELLIDO, MONTO) VALUES
('001', 'EMMANUEL', 'URIAS', 143894),
('002', 'CESAR', 'YAÑEZ', 123987),
('003', 'PAOLA', 'ALVAREZ', 124398.23),
('004', 'IVAN', 'VERA', 98732.12)
Clausula TOP
Primero comenzaremos explicando cual es la función la clausula TOP, en la base de datos anterior tenemos una tabla de 4 registros, nosotros queremos obtener el top 1 de monto, es fácil hacerlo con una función MAX, pero el tema que nos toca el la clausula TOP. Pues bien, hagamos el ejemplo y lo ejecutaremos de la siguiente manera
SELECT TOP 1 CODIGO FROM PRUEBAS ORDER BY MONTO DESC
Guardar el resultado de TOP a variable
Con eso obtendremos el código que tiene el monto más alto, ahora lo guardaremos en una variable
declare @codigo as varchar(3)
select @codigo = top 1 from pruebas order by monto desc
Este código retorna el siguiente error
Msg 156, Level 15, State 1, Line 21
Incorrect syntax near the keyword 'top'.
Ese error es debido a que no es posible en sql guardar el resultado del TOP de esa manera, para eso haremos uso del parámetro SET ROWCOUNT
SET ROWCOUNT
Es un parámetro del sistema que afectará a la instancia cuyo valor indicado será el número de registros a mostrar, en este caso solo queremos un solo registro. Es importante regresarlo a 0, donde 0 es el valor ilimitado de registros
SET ROWCOUNT 1
declare @codigo as varchar(3)
select @codigo = CODIGO from pruebas order by monto desc
SET ROWCOUNT 0
PRINT @CODIGO
Con este pequeño código ya podrán recuperar la variable guardada como si fuera el TOP
Espero que este post haya sido de su agrado y utilidad, les invito a compartir, comentar o dar algun clic en los anuncios patrocinados. Saludos
No hay comentarios.:
Publicar un comentario