el primero

20/06/2006 - 14:42 por Jiordie | Informe spam
buenas tardes, tengo algo que no he podido hacer de ninguna forma, tengo
este conjunto de datos:

NumOrd CodMP CanKil
17130 PKBL7001 1681.1936
17130 PKC10007 109.4689
17542 PKBL7490 2272.5491
17542 PKC20018 546.2612
17542 PKGU1572 251.009
17681 PKBL0051 260.2442
17681 PKC12562 92.7998

lo que quiero es una consulta que solo me traiga el NumOrd, CodMP del
registro que tenga mayor CanKil, es decir el conjunto de registros deberia
quedar asi:

17130 PKBL7001 1681.1936
17542 PKBL7490 2272.5491
17681 PKBL0051 260.2442

Muchas gracias desde ya, y espero que alguien me pueda ayudar.

Preguntas similare

Leer las respuestas

#1 BitOne®
20/06/2006 - 14:58 | Informe spam
asi seria sin temr a equivocarme.

select numord, condmp, max(cankil) cankil
from tabla
group by numord, codmp

leete un poquito sobre group by en tus book online.



"Jiordie" wrote in message
news:
buenas tardes, tengo algo que no he podido hacer de ninguna forma, tengo
este conjunto de datos:

NumOrd CodMP CanKil
17130 PKBL7001 1681.1936
17130 PKC10007 109.4689
17542 PKBL7490 2272.5491
17542 PKC20018 546.2612
17542 PKGU1572 251.009
17681 PKBL0051 260.2442
17681 PKC12562 92.7998

lo que quiero es una consulta que solo me traiga el NumOrd, CodMP del
registro que tenga mayor CanKil, es decir el conjunto de registros deberia
quedar asi:

17130 PKBL7001 1681.1936
17542 PKBL7490 2272.5491
17681 PKBL0051 260.2442

Muchas gracias desde ya, y espero que alguien me pueda ayudar.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
20/06/2006 - 15:02 | Informe spam
Trata:

select *
from t1
where not exists (
select *
from t1 as t2
where t2.NumOrd = t1.NumOrd and t2.CanKil > t1.CanKil
)
go

Tambien puedes usar:

select t1.*
from t1
inner join (
select NumOrd, max(CanKil) as max_CanKil
from t1
group by NumOrd
) as t2
on t1.NumOrd = t2.NumOrd
and t1.CanKil = t2.CanKil
go

Ninguna de las sentencias anteriores toma en cuenta que pueden existir mas
de una fila para un mismo valor de [NumOrd] con igual [CanKil]. En este caso
necesitaras otra columna para romper el empate.

select *
from t1
where not exists (
select *
from t1 as t2
where
t2.NumOrd = t1.NumOrd
and
(
t2.CanKil > t1.CanKil
or
(t2.CanKil = t1.CanKil and t2.CodMP > t1.CodMP)
)
)
go


AMB

"Jiordie" wrote:

buenas tardes, tengo algo que no he podido hacer de ninguna forma, tengo
este conjunto de datos:

NumOrd CodMP CanKil
17130 PKBL7001 1681.1936
17130 PKC10007 109.4689
17542 PKBL7490 2272.5491
17542 PKC20018 546.2612
17542 PKGU1572 251.009
17681 PKBL0051 260.2442
17681 PKC12562 92.7998

lo que quiero es una consulta que solo me traiga el NumOrd, CodMP del
registro que tenga mayor CanKil, es decir el conjunto de registros deberia
quedar asi:

17130 PKBL7001 1681.1936
17542 PKBL7490 2272.5491
17681 PKBL0051 260.2442

Muchas gracias desde ya, y espero que alguien me pueda ayudar.



Respuesta Responder a este mensaje
#3 Jiordie
20/06/2006 - 15:46 | Informe spam
ESTO FUE PERFECTO!!!!!
muchisimas gracias!!!

"Alejandro Mesa" escribió en el
mensaje news:
Trata:

select *
from t1
where not exists (
select *
from t1 as t2
where t2.NumOrd = t1.NumOrd and t2.CanKil > t1.CanKil
)
go

Tambien puedes usar:

select t1.*
from t1
inner join (
select NumOrd, max(CanKil) as max_CanKil
from t1
group by NumOrd
) as t2
on t1.NumOrd = t2.NumOrd
and t1.CanKil = t2.CanKil
go

Ninguna de las sentencias anteriores toma en cuenta que pueden existir mas
de una fila para un mismo valor de [NumOrd] con igual [CanKil]. En este
caso
necesitaras otra columna para romper el empate.

select *
from t1
where not exists (
select *
from t1 as t2
where
t2.NumOrd = t1.NumOrd
and
(
t2.CanKil > t1.CanKil
or
(t2.CanKil = t1.CanKil and t2.CodMP > t1.CodMP)
)
)
go


AMB

"Jiordie" wrote:

buenas tardes, tengo algo que no he podido hacer de ninguna forma, tengo
este conjunto de datos:

NumOrd CodMP CanKil
17130 PKBL7001 1681.1936
17130 PKC10007 109.4689
17542 PKBL7490 2272.5491
17542 PKC20018 546.2612
17542 PKGU1572 251.009
17681 PKBL0051 260.2442
17681 PKC12562 92.7998

lo que quiero es una consulta que solo me traiga el NumOrd, CodMP del
registro que tenga mayor CanKil, es decir el conjunto de registros
deberia
quedar asi:

17130 PKBL7001 1681.1936
17542 PKBL7490 2272.5491
17681 PKBL0051 260.2442

Muchas gracias desde ya, y espero que alguien me pueda ayudar.



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