Consulta SQL

10/09/2007 - 14:54 por Ricardo L. Calvo | Informe spam
Buen dia estimado grupo :

Tengo una consulta Select con on order by codigo de manera que me quedan
entre 1 y 10 filas aprox con el mismo codigo, algo asi :

130..
152...
152...
160..
160..
160..
175..
175..
175..
175..
180..
como haria para quedarme solo con dos filas de un mismo codigo?, cdo hay mas
de dos. O sea que me quede asi :
130..
152..
152..
160..
160..
175..
175..
180..

Muchas gracias desde ya

Preguntas similare

Leer las respuestas

#11 Carlos M. Calvelo
12/09/2007 - 22:52 | Informe spam
Hola Ricardo,

On 12 sep, 20:09, "Ricardo L. Calvo" <calvo66 'sacar' @yahoo.com.ar>
wrote:
Carlos , gracias por seguir con mi problema , la cosa es asi :

Tengo una tabla con codigo de articulo (Codigo) fecha de pedido (Fecha_ped)
y fecha de llegada a planta (Fecha_rec) , esta tabla puede tener varias
filas por articulo segun las veces que se haya pedido ese articulo, entonces
podria tener:

Art fec_ped fec_rec dif_dias

1 01/01/07 15/01/07 14
1 20/01/07 30/01/07 10
1 10/02/07 20/02/07 10
3 01/01/07 15/01/07 14
4 05/01/07 10/01/07 5
4 20/01/07 30/01/07 10



Bueno... pues Art no puede ser la clave porque no identifica las
lineas, se repite.


Lo que necesito es : de los dos ultimos pedidos de cada articulo, promediar
los dias de tardanza entre fecha pedido y fecha llegada :



Dices 'los dos últimos pedidos', pero.. y si tenemos:
Art fec_ped fec_rec dif_dias

1 01/01/07 15/01/07 14
1 01/01/07 15/01/07 14
1 01/01/07 15/01/07 14
...
cuales son aquí los dos últimos pedidos?
Son estos tres pedidos distintos, o son el mismo resistrado varias
veces?
Si son distintos como podemos referirnos a cada uno de ellos?
Te das cuenta de lo que quiero decir con 'identificar'?

Ahora.. si me dices que la combinación {Art, fec_ped} es única
entonces tenemos la (dichosa) clave primaria. Es decir.. no se
puede entonces hacer mas que un pedido de un articulo por día.

A ver si es esto entonces lo que buscas:

select p1.Art, p1.fec_ped,avg(p2.dif_dias) as 'media'
from pedidos p1 inner join pedidos p2
on p1.Art = p2.Art and p1.fec_ped>=p2.fec_ped
group by p1.Art,p1.fec_ped
having count(*) >
(select count(*) from pedidos where art=p1.art) - 2
order by p1.Art,p1.fec_ped

Si se tiene que poder hacer mas de un pedido de un articulo el
mismo día, necesitas otra clave primaria; algo como 'pedido_no'.
y el join tendra que tener en cuenta este último en vez de
'fec_ped'.

A vez si ahora hemos dado en el clavo.

Saludos,
Carlos
Respuesta Responder a este mensaje
#12 Carlos M. Calvelo
12/09/2007 - 23:21 | Informe spam
Si se tiene que poder hacer mas de un pedido de un articulo el
mismo día, necesitas otra clave primaria; algo como 'pedido_no'.
y el join tendra que tener en cuenta este último en vez de
'fec_ped'.



Bueno... el 'pedido_no' no sería 'en vez de' 'fec_ped' .
Se necesitarían los dos, claro. Asi se tendría un orden (los dos
últimos!) dentro de un grupo de pedidos del mismo artículo y
con la misma fecha.

Saludos
Respuesta Responder a este mensaje
#13 Ricardo L. Calvo
13/09/2007 - 15:59 | Informe spam
Carlos , tu ejemplo no solo me resolvió el problema sino que me dejó un
material exquisito para analizar y aprender.
Te quedo enormemente agradecido,
Ricardo Calvo



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

Si se tiene que poder hacer mas de un pedido de un articulo el
mismo día, necesitas otra clave primaria; algo como 'pedido_no'.
y el join tendra que tener en cuenta este último en vez de
'fec_ped'.



Bueno... el 'pedido_no' no sería 'en vez de' 'fec_ped' .
Se necesitarían los dos, claro. Asi se tendría un orden (los dos
últimos!) dentro de un grupo de pedidos del mismo artículo y
con la misma fecha.

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