Novato TOTAL -> ¿fácil?

30/09/2006 - 23:16 por dgironal | Informe spam
Muy buenas, estoy utilizando SQL Server 2000 y no sé como realizar la
siguiente consulta:

TablaDatosNumericos
-
id C1 C2 C3 C4

Necesito que la consulta devuelva el valor más grande almacenado en las
columnas,
ejemplo

id C1 C2 C3 C4
id31 1.000 2.000 500 750
id22 8.000 7.000 6.000 5.000

que la consulta devuelva 2.000 (correspondiente al primer registro), 8.000
(correspondiente al segundo registro)

pseudocódigo

SELECT elMayorDatoNumericoEnLasColumnas(c1,c2,c3,c4) AS mayor
FROM Tabla
WHERE id=al que sea

Grascias de antemano

Preguntas similare

Leer las respuestas

#1 Pedro Echavarria
01/10/2006 - 00:39 | Informe spam
Completa tu mismo la funcion propuesta elMayorDatoNumericoEnLasColumnas . La
puedes codificar usando la funcion CASE o simplemente con IF.. ELSE

"dgironal" wrote in message
news:
Muy buenas, estoy utilizando SQL Server 2000 y no sé como realizar la
siguiente consulta:

TablaDatosNumericos
-
id C1 C2 C3 C4

Necesito que la consulta devuelva el valor más grande almacenado en las
columnas,
ejemplo

id C1 C2 C3 C4
id31 1.000 2.000 500 750
id22 8.000 7.000 6.000 5.000

que la consulta devuelva 2.000 (correspondiente al primer registro), 8.000
(correspondiente al segundo registro)

pseudocódigo

SELECT elMayorDatoNumericoEnLasColumnas(c1,c2,c3,c4) AS mayor
FROM Tabla
WHERE id=al que sea

Grascias de antemano

Respuesta Responder a este mensaje
#2 Alejandro Mesa
01/10/2006 - 00:41 | Informe spam
dgironal,

1 - Si la tabla no tiene muchas filas, puedes transformar las columnas a
filas y agrupar por [id], sacando el maximo por cada [id].

select
[id],
max(
case t2.c1
when 1 then t1.c1
when 2 then t1.c2
when 3 then t1.c3
when 4 then t1.c4
) as max_c
from
dbo.t1 as t1
cross join
(
select 1 as c1
union all
select 2
union all
select 3
union all
select 3
) as t2
group by t1.[id]
go

2 - Puedes crear una funcion de usuario que acepte cuatro parametros y
devuelva el mayor.

create function dbo.f1 (
@c1 int,
@c2 int,
@c3 int,
@c4 int
)
returns int
as
begin
declare @i int

select @i = max(c1)
from (
select @c1 as c1
union all
select @c2
union all
select @c3
union all
select @c4
) as t1

return @i
end
go

select [id], dbo.f1(c1, c2, c3, c4) as max_c
from dbo.t1
go


AMB

"dgironal" wrote:

Muy buenas, estoy utilizando SQL Server 2000 y no sé como realizar la
siguiente consulta:

TablaDatosNumericos
-
id C1 C2 C3 C4

Necesito que la consulta devuelva el valor más grande almacenado en las
columnas,
ejemplo

id C1 C2 C3 C4
id31 1.000 2.000 500 750
id22 8.000 7.000 6.000 5.000

que la consulta devuelva 2.000 (correspondiente al primer registro), 8.000
(correspondiente al segundo registro)

pseudocódigo

SELECT elMayorDatoNumericoEnLasColumnas(c1,c2,c3,c4) AS mayor
FROM Tabla
WHERE id=al que sea

Grascias de antemano



Respuesta Responder a este mensaje
#3 dgironal
01/10/2006 - 01:35 | Informe spam
Mil gracias a los dos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida