Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

cantidad más pequeña...

Estas en el tema de cantidad más pequeña... en el foro de SQL Server en Foros del Web. Hola q tal, pues aqi ando buscando hacer una consulta que me devuelva la cantidad más peqeña... Tengo una lista de 'crédito', donde se almacenan ...
  #1 (permalink)  
Antiguo 06/04/2010, 16:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta cantidad más pequeña...

Hola q tal, pues aqi ando buscando hacer una consulta que me devuelva la cantidad más peqeña...
Tengo una lista de 'crédito', donde se almacenan todos los abonos que va haciendo hasta dejar el saldo en cero, ahora bien, necesito mostrar de entrada sólo el registro con la cantidad de saldo más peqeña... mis pruebas las he hecho con MIN, i en algunos casos no me funciona... por ejemplo:

Código:
SELECT     estado, id_paciente, id_detalle_venta, saldo
FROM         creditos
WHERE      (id_cliente = 2) AND (creditos.estado LIKE N'%adeuda%')
order by id_detalle_venta

SELECT     estado, id_paciente, id_detalle_venta, MIN(saldo) AS Expr1
FROM         creditos
WHERE     (id_cliente = 2) AND (creditos.estado LIKE N'%adeuda%')
GROUP BY estado, id_paciente, id_detalle_venta
order by id_detalle_venta
Genera:
estado idpaciente venta saldo
adeuda - 8 - 264 - 55.50
adeuda - 8 - 264 - 35.50

estado idpaciente venta saldo
adeuda - 8 - 264 - 35.50

Pero al qerer recuperar con toda la info que requiero:

Código:
SELECT DISTINCT 
                      datos_personales_paciente.nombre + ' ' + datos_personales_paciente.ap_paterno + ' ' + datos_personales_paciente.ap_materno AS Nombre, 
                      datos_personales_paciente.sexo AS Sexo, datos_personales_paciente.fecha_nac AS [Fecha de Nacimiento], datos_personales_paciente.id_paciente AS ID, 
                      creditos.id_detalle_venta, min(creditos.saldo) as Saldo
FROM         datos_personales_paciente INNER JOIN
                      clientes ON datos_personales_paciente.id_cliente = clientes.id_cliente INNER JOIN
                      creditos ON datos_personales_paciente.id_paciente = creditos.id_paciente AND clientes.id_cliente = creditos.id_cliente
WHERE     (datos_personales_paciente.nombre NOT LIKE N'%*%') AND (clientes.id_cliente = 6) AND (creditos.estado LIKE N'%adeuda%')
GROUP BY datos_personales_paciente.nombre + ' ' + datos_personales_paciente.ap_paterno + ' ' + datos_personales_paciente.ap_materno, datos_personales_paciente.sexo, 
                      datos_personales_paciente.fecha_nac, datos_personales_paciente.id_paciente, creditos.id_detalle_venta, creditos.saldo
Me resulta esto:
Nuevo - M - 2010-03-16 - 8 - 264 - 35.50
Nuevo - M - 2010-03-16 - 8 - 264 - 55.50

Yyyy sólo debería mostrar el de 35.50 no?
Alguna idea? GRacias de antemano!
  #2 (permalink)  
Antiguo 06/04/2010, 16:48
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: cantidad más pequeña...

Creo encontrar algo (algo que ya había posteado :P)
Código:
SELECT distinct
                      datos_personales_paciente.nombre + ' ' + datos_personales_paciente.ap_paterno + ' ' + datos_personales_paciente.ap_materno AS Nombre, 
                      datos_personales_paciente.sexo AS Sexo, datos_personales_paciente.fecha_nac AS [Fecha de Nacimiento], datos_personales_paciente.id_paciente AS ID, 
                      creditos.id_detalle_venta, creditos.saldo as Saldo
FROM         datos_personales_paciente INNER JOIN
                      clientes ON datos_personales_paciente.id_cliente = clientes.id_cliente INNER JOIN
                      creditos ON datos_personales_paciente.id_paciente = creditos.id_paciente AND clientes.id_cliente = creditos.id_cliente
WHERE     (datos_personales_paciente.nombre NOT LIKE N'%*%') AND (clientes.id_cliente = 5) AND (creditos.estado LIKE N'%adeuda%')
and (creditos.saldo in 
(SELECT  min(creditos.saldo) AS Saldo 
FROM         creditos 
WHERE (creditos.id_cliente = 5) GROUP BY creditos.id_detalle_venta))
GROUP BY datos_personales_paciente.nombre + ' ' + datos_personales_paciente.ap_paterno + ' ' + datos_personales_paciente.ap_materno, datos_personales_paciente.sexo, 
                      datos_personales_paciente.fecha_nac, datos_personales_paciente.id_paciente, creditos.id_detalle_venta, creditos.saldo
si alguien sabe o tiene una ocurrencia de cómo hacerlo correctamente, pues mencionelo porfa!!!
Saludos!

Última edición por lestatAb; 06/04/2010 a las 17:07 Razón: forma correcta
  #3 (permalink)  
Antiguo 06/04/2010, 18:23
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: cantidad más pequeña...

Xin!!.... no sale.... Alguna idea?
  #4 (permalink)  
Antiguo 06/04/2010, 18:49
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: cantidad más pequeña...

Estem... E-s-p-e-r-o me sirva este:

Código:
SELECT     creditos.id_paciente as Clave, datos_personales_paciente.nombre + N' ' + datos_personales_paciente.ap_paterno + N' ' + datos_personales_paciente.ap_materno AS Nombre, datos_personales_paciente.sexo, 
                      datos_personales_paciente.fecha_nac, creditos.id_detalle_venta, MIN(creditos.saldo) AS saldo                    
FROM         creditos INNER JOIN
                      datos_personales_paciente ON creditos.id_paciente = datos_personales_paciente.id_paciente
GROUP BY creditos.id_detalle_venta, creditos.id_cliente, creditos.estado, 
                      datos_personales_paciente.nombre + N' ' + datos_personales_paciente.ap_paterno + N' ' + datos_personales_paciente.ap_materno, creditos.id_paciente, 
                      datos_personales_paciente.sexo, datos_personales_paciente.fecha_nac
HAVING      (creditos.id_cliente = @id) AND (creditos.estado LIKE N'%adeuda%')

Etiquetas: cantidad, min, pequeña, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:00.