Problema con un select.

04/11/2005 - 08:17 por José Antonio | Informe spam
Hola grupo, tengo una pega con un select y no consigo solucionarlo.

Tengo una tabla con lo que tengo quer cobrar a cada cliente dependiendo del
numero de puntos que tenga este cliente.

Esta tabla esta de la siguiente forma:

Tabla Puntos

HastaPuntos Importe

100 12 ?
200 18 ?
300 22 ?
400 25?
500 27?
600 28?
700 29?
999999999 30?


Otra tabla tiene PuntosCliente tiene las columnas Codigo y Puntos de cada
uno de los clientes.

Si un cliente tiene 201 puntos se le asigna ya el tramo de 300 y se le cobra
22?, siempre se le cobra el tramo si es igual o el tramo superior si es
superior al tramo anterior,
al cliente que tiene 201 puntos se le cobra lo mismo que al de 300, al
cliente que tiene 299 o como maximo 300 se le cobra 300 peros si tiene 301
ya se le cobra el tramo siguiente que es
el de 400 que corresponde a un importe de 25?.

He probrado:

select c.codigo,c.puntos,p.importe from puntoscliente c join Puntos p on
p.hastapuntos>c.puntos

esto me da varias filas, una por cada tramo mayor a c.puntos que hay.

Alguna sugerencia?


Saludos.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristán
04/11/2005 - 08:47 | Informe spam
Te falta agrupar los valores. Prueba con:

SELECT c.codigo,c.puntos, MIN(p.importe ) importe
FROM puntoscliente c JOIN Puntos p ON p.hastapuntos>c.puntos
GROUP BY c.codigo, c.puntos



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"José Antonio" escribió en el
mensaje news:OidwD$
Hola grupo, tengo una pega con un select y no consigo solucionarlo.

Tengo una tabla con lo que tengo quer cobrar a cada cliente dependiendo


del
numero de puntos que tenga este cliente.

Esta tabla esta de la siguiente forma:

Tabla Puntos

HastaPuntos Importe

100 12 ?
200 18 ?
300 22 ?
400 25?
500 27?
600 28?
700 29?
999999999 30?


Otra tabla tiene PuntosCliente tiene las columnas Codigo y Puntos de cada
uno de los clientes.

Si un cliente tiene 201 puntos se le asigna ya el tramo de 300 y se le


cobra
22?, siempre se le cobra el tramo si es igual o el tramo superior si es
superior al tramo anterior,
al cliente que tiene 201 puntos se le cobra lo mismo que al de 300, al
cliente que tiene 299 o como maximo 300 se le cobra 300 peros si tiene 301
ya se le cobra el tramo siguiente que es
el de 400 que corresponde a un importe de 25?.

He probrado:

select c.codigo,c.puntos,p.importe from puntoscliente c join Puntos p on
p.hastapuntos>c.puntos

esto me da varias filas, una por cada tramo mayor a c.puntos que hay.

Alguna sugerencia?


Saludos.



Respuesta Responder a este mensaje
#2 Alejandro Mesa
04/11/2005 - 15:41 | Informe spam
Trata:

select
a.Codigo, a.Puntos, b.HastaPuntos, b.Importe
from
PuntosCliente as a
inner join
Puntos as b
on b.HastaPuntos = (
select min(c.HastaPuntos)
from Puntos as c
where c.HastaPuntos > a.Puntos
)
go


AMB

"José Antonio" wrote:

Hola grupo, tengo una pega con un select y no consigo solucionarlo.

Tengo una tabla con lo que tengo quer cobrar a cada cliente dependiendo del
numero de puntos que tenga este cliente.

Esta tabla esta de la siguiente forma:

Tabla Puntos

HastaPuntos Importe

100 12 ?
200 18 ?
300 22 ?
400 25?
500 27?
600 28?
700 29?
999999999 30?


Otra tabla tiene PuntosCliente tiene las columnas Codigo y Puntos de cada
uno de los clientes.

Si un cliente tiene 201 puntos se le asigna ya el tramo de 300 y se le cobra
22?, siempre se le cobra el tramo si es igual o el tramo superior si es
superior al tramo anterior,
al cliente que tiene 201 puntos se le cobra lo mismo que al de 300, al
cliente que tiene 299 o como maximo 300 se le cobra 300 peros si tiene 301
ya se le cobra el tramo siguiente que es
el de 400 que corresponde a un importe de 25?.

He probrado:

select c.codigo,c.puntos,p.importe from puntoscliente c join Puntos p on
p.hastapuntos>c.puntos

esto me da varias filas, una por cada tramo mayor a c.puntos que hay.

Alguna sugerencia?


Saludos.




Respuesta Responder a este mensaje
#3 Jose Antonio
05/11/2005 - 20:40 | Informe spam
Gracias a los dos, con vuestras ideas ya he conseguido resolverlo.

"José Antonio" escribió en el
mensaje news:OidwD$
Hola grupo, tengo una pega con un select y no consigo solucionarlo.

Tengo una tabla con lo que tengo quer cobrar a cada cliente dependiendo
del numero de puntos que tenga este cliente.

Esta tabla esta de la siguiente forma:

Tabla Puntos

HastaPuntos Importe

100 12 ?
200 18 ?
300 22 ?
400 25?
500 27?
600 28?
700 29?
999999999 30?


Otra tabla tiene PuntosCliente tiene las columnas Codigo y Puntos de cada
uno de los clientes.

Si un cliente tiene 201 puntos se le asigna ya el tramo de 300 y se le
cobra 22?, siempre se le cobra el tramo si es igual o el tramo superior si
es superior al tramo anterior,
al cliente que tiene 201 puntos se le cobra lo mismo que al de 300, al
cliente que tiene 299 o como maximo 300 se le cobra 300 peros si tiene 301
ya se le cobra el tramo siguiente que es
el de 400 que corresponde a un importe de 25?.

He probrado:

select c.codigo,c.puntos,p.importe from puntoscliente c join Puntos p on
p.hastapuntos>c.puntos

esto me da varias filas, una por cada tramo mayor a c.puntos que hay.

Alguna sugerencia?


Saludos.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida