Como seleccionar estos registros ??

11/03/2008 - 13:53 por Penta | Informe spam
Estimados.
Utilizo SQL SERVER 2000 SP4

Tengo una tabla, que tiene lo siguiente:

codigo nivel cantidad

Primer caso:

codigo nivel cantidad
1 1 2
1 3 3
1 8 5

Necesito quedarme con el 3er registro que es el que tiene una mayor
numero en el campo cantidad. por otro lado, y este es el 2do caso:

codigo nivel cantidad
2 1 3
2 3 3

Aca necesito quedarme con el primer registro, ya que tienen la misma
cantidad pero el nivel que deseo debe ser el menor.

Ojala pudiesen ayudarme y si es posible hacerlo en una misma consulta.

Siempre agradecido del foro.
Penta.

Preguntas similare

Leer las respuestas

#11 Carlos M. Calvelo
11/03/2008 - 18:41 | Informe spam
Hola Penta,

On 11 mrt, 18:04, Penta wrote:
Sensacional, lo malo es que no logro "ver" de forma clara la consulta
de Alejandro, que obviamente esta perfecta, pero me cuesta mas
entender la logica :( , pero bueno eso es un "desperfecto" en mi
cerebro :)




No hay mucho que añadir a la explicación de Alejandro.
Quizás este truco te ayude: analiza la consulta con
un EXISTS en vez de un NOT EXISTS.
Si entiendes esa, la consulta con el NOT EXISTS
dará todos los registros que no estén en la consulta
con el EXISTS.

Saludos,
Carlos
Respuesta Responder a este mensaje
#12 jcac
11/03/2008 - 18:51 | Informe spam
Hola Carlos,

Si es correcto, solo que me cuesta algo entender la lógica pero ya podré
jejejeje.

Saludos

Juan Carlos



"Carlos M. Calvelo" escribió en el mensaje
news:
Hola Juan Carlos,

On 11 mrt, 17:49, "jcac" wrote:

ahora como un punto aparte prove los planes de ejecución de las consultas
de
todos y la que tiene mejor resultado es la de Alejandro.




Para mi gusto es también la mas elegante.
(Independientemente de lo que digan los planes de ejecución)

Saludos,
Carlos
Respuesta Responder a este mensaje
#13 Alejandro Mesa
11/03/2008 - 19:23 | Informe spam
Penta,

Vamos a usar la data de ejemplo.

1 1 2
1 3 3
1 8 5

No importa el orden en que se procesen las filas, asi que iremos en el sgte
orden:

Fila corriente:
1 1 2

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: Si

1 3 3
1 8 5

entonces esta fila no entra en el resultado.

Fila corriente:
1 3 3

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: Si

1 8 5

entonces esta fila no entra en el resultado.

Fila corriente:
1 8 5

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: No, entonces esta fila si entra en el resultado.

Ahora procesamos estas dos.

2 1 3
2 3 3

Fila corriente:
2 1 3

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: No, pero si existe una con igual valor en la columna [cantidad]
(mismo codigo), asi que usamos la columna [nivel] para romper el empate.

Pregunta: Existe alguna otra fila con el mismo codigo, igual cantidad, pero
valor the nivel menor?

Respuesta: No, entonces esta fila entra en el resultado.

Fila corriente:
2 3 3

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

No, pero si existe una con igual valor en la columna [cantidad], asi que
usamos la columna [nivel] para romper el empate.

Pregunta: Existe alguna otra fila con el mismo codigo, igual cantidad, pero
valor the nivel menor?

Respuesta: Si

2 1 3

entonces esta fila no entra en el resultado.


Si por casualidad existe otra fila con igual codigo, nivel y cantidad (las
tres columnas se repiten), entonces tendremos que usar alguna otra columna
para romper el empate.

AMB


"Penta" wrote:

Sensacional, lo malo es que no logro "ver" de forma clara la consulta
de Alejandro, que obviamente esta perfecta, pero me cuesta mas
entender la logica :( , pero bueno eso es un "desperfecto" en mi
cerebro :)

Gracias TOTALES

Penta.

Respuesta Responder a este mensaje
#14 Carlos M. Calvelo
11/03/2008 - 20:03 | Informe spam
Hola otra vez,

On 11 mrt, 18:04, Penta wrote:
Sensacional, lo malo es que no logro "ver" de forma clara la consulta
de Alejandro, que obviamente esta perfecta, pero me cuesta mas
entender la logica :( , pero bueno eso es un "desperfecto" en mi
cerebro :)

Gracias TOTALES





Voy a intentar otra explicación en lenguage natural:



Cada registro en t1 para el que existe otro registro

(con el mismo código Y una cantidad mayor )
O
(con el mismo código Y la misma cantidad Y con un nivel menor),

NO entrará en el resultado.


Saludos,
Carlos
Respuesta Responder a este mensaje
#15 jcac
11/03/2008 - 20:17 | Informe spam
Hola Alejandro,

Solo para agradecerte la explicación que haz dado, me ha parecido como
escuchar una clase magistral.

Saludos

Juan Carlos

"Alejandro Mesa" escribió en el
mensaje news:
Penta,

Vamos a usar la data de ejemplo.

1 1 2
1 3 3
1 8 5

No importa el orden en que se procesen las filas, asi que iremos en el
sgte
orden:

Fila corriente:
1 1 2

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: Si

1 3 3
1 8 5

entonces esta fila no entra en el resultado.

Fila corriente:
1 3 3

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: Si

1 8 5

entonces esta fila no entra en el resultado.

Fila corriente:
1 8 5

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: No, entonces esta fila si entra en el resultado.

Ahora procesamos estas dos.

2 1 3
2 3 3

Fila corriente:
2 1 3

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

Respuesta: No, pero si existe una con igual valor en la columna [cantidad]
(mismo codigo), asi que usamos la columna [nivel] para romper el empate.

Pregunta: Existe alguna otra fila con el mismo codigo, igual cantidad,
pero
valor the nivel menor?

Respuesta: No, entonces esta fila entra en el resultado.

Fila corriente:
2 3 3

Pregunta: Existe alguna otra fila con el mismo codigo y cantidad mayor?

No, pero si existe una con igual valor en la columna [cantidad], asi que
usamos la columna [nivel] para romper el empate.

Pregunta: Existe alguna otra fila con el mismo codigo, igual cantidad,
pero
valor the nivel menor?

Respuesta: Si

2 1 3

entonces esta fila no entra en el resultado.


Si por casualidad existe otra fila con igual codigo, nivel y cantidad (las
tres columnas se repiten), entonces tendremos que usar alguna otra columna
para romper el empate.

AMB


"Penta" wrote:

Sensacional, lo malo es que no logro "ver" de forma clara la consulta
de Alejandro, que obviamente esta perfecta, pero me cuesta mas
entender la logica :( , pero bueno eso es un "desperfecto" en mi
cerebro :)

Gracias TOTALES

Penta.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida