Duda en consulta sql

22/06/2004 - 23:03 por Anonimo | Informe spam
Amigos foreros:

Despues de mucho tiempo, me reincorporo a los foros (antes aparecia como
hmuniz@tutopia.com).
Tengo una consulta con los siguientes datos:

DATEGENERATED ITEMNUM VENDORID UNITCOST
02/04/2004 14-010-000054E 001881 $ 0.21
02/04/2004 14-010-002007L 001881 $ 1.66
02/04/2004 14-010-002015L 001881 $ 0.12
03/04/2004 14-010-002015L 001881 $ 0.15

...

Lo que necesito es, para cada ITEMNUM, buscar el siguiente y, si UNITCOST es
mayor a un 5% del valor del anterior, lo mande a la consulta...

... seria una cosa asi:

ITEMNUM DATE1 VENDOR1 COST1 DATE2 VENDOR2 COST2
PORC
14-010-002015L 02/04/2004 001881 $ 0.12 03/04/2004 001881 $ 0.15
25.00%

...

Es posible hacerlo mediante una subconsulta? O tengo que generar el codigo
correspondiente?Espero haberme hecho entender. Gracias desde ahora.

Julio.

"Para triunfar, el mero planteamiento inicial no basta. También hay que
improvisar."
(Salvor Hardin)

Preguntas similare

Leer las respuestas

#1 Isaías
22/06/2004 - 23:52 | Informe spam
Si es un 5% mayor a la ANTERIOR, al final es tan simple
como sacar el MAX por ITEM, ¿no?
Respuesta Responder a este mensaje
#2 Liliana Sorrentino
24/06/2004 - 14:58 | Informe spam
Hola Julio,
Las sugerencias de Javier y mía ¿no hacen lo que necesitás?

escribió en el mensaje
news:e#
Gracias por la ayuda!

No se si aporta algo a la solucion, pero en mi afan de simplificar los datos
(para que ustedes tengan una vision mas concisa del problema), quizas omiti
algo importante.

En realidad, la estructura original consta, ademas, de un numero de
secuencia unico para cada transaccion. Por lo tanto, los datos originales
quedarian asi:

SEQNUM DATE ITEMNUM VEND COST
=765 02/04/2004 14-010-000054E 001881 $ 0.21
3799 02/04/2004 14-010-002007L 001881 $ 1.66
3815 02/04/2004 14-010-002015L 001881 $ 0.12
3816 03/04/2004 14-010-002015L 001881 $ 0.15
3825 03/04/2004 14-010-002007L 001881 $ 1.66
3833 04/04/2004 14-010-000054E 002536 $ 0.18
3837 04/04/2004 14-010-002007L 000401 $ 1.70
3850 05/04/2004 14-010-002015L 001881 $ 0.20
3852 05/04/2004 14-010-000054E 009999 $ 0.20

...

Tal vez este detalle sea significativo. Si le podes dar una miradita,te lo
agradeceria un montonazo. Gracias por todo!

Julio.
"Liliana Sorrentino" escribió en el mensaje
news:
Hola,
La consulta queda horrible, pero hace lo que necesitás. Habría que probarlo
con un volumen importante de información para ver la performance. Descuento
que hay índice por itemnum, date.
Espero que te sirva, saludos... Liliana.

SELECT item, date1, vendor, cost, date2, t3.vendorid, t3.unitcost
FROM
(SELECT item = t1.itemnum,
date1 = t1.dategenerated,
vendor = t1.vendorid,
cost = t1.unitcost,
date2 = MIN(t2.dategenerated)
FROM #test t1
INNER JOIN #test t2
ON t1.itemnum = t2.itemnum AND t2.dategenerated >= t1.dategenerated
AND t2.unitcost >= t1.unitcost * 1.05
GROUP BY t1.itemnum, t1.dategenerated, t1.vendorid, t1.unitcost) uno
INNER JOIN #test t3
ON item = t3.itemnum AND t3.dategenerated = date2

escribió en el mensaje
news:
Me parece que no, ya que la idea no es sacar el max por item, sino que, cada
vez que se detecte un incremento del valor de un item mayor al 5%, se genere
el registro. Si es del mismo item, no importa. Imaginate esta situacion:

DATE ITEMNUM VEND COST
==/04/2004 14-010-000054E 001881 $ 0.21
02/04/2004 14-010-002007L 001881 $ 1.66
02/04/2004 14-010-002015L 001881 $ 0.12
03/04/2004 14-010-002015L 001881 $ 0.15
03/04/2004 14-010-002007L 001881 $ 1.66
04/04/2004 14-010-000054E 002536 $ 0.18
04/04/2004 14-010-002007L 000401 $ 1.70
05/04/2004 14-010-002015L 001881 $ 0.20
05/04/2004 14-010-000054E 009999 $ 0.20

...

Una posibilidad seria hacer una consulta que me devolviera este resultado:

ITEMNUM DATE1 VENDOR1 COST1 DATE2 VENDOR2 COST2
INDICE
==-010-000054E 02/04/2004 001881 $ 0.21 04/04/2004 002536 $
.18 -0.1429
14-010-000054E 04/04/2004 002536 $ 0.18 04/04/2004 009999 $ 0.20
0.1111
14-010-002007L 02/04/2004 001881 $ 1.66 03/04/2004 001881 $ 1.66
0.0000
14-010-002015L 02/04/2004 001881 $ 0.12 03/04/2004 001881 $ 0.15
0.2500
14-010-002015L 03/04/2004 001881 $ 0.15 05/04/2004 001881 $ 0.20
0.3333

...

O sea, para cada ITEMNUM, buscar la siguiente ocurrencia y calcular la
diferencia de costo. Despues bastaria con filtrar por INDICE > 0.0500.

Esto es para tener un control sobre los costos de las compras que se
realizan, y poder identificar los proveedores con mejor costo.

Espero haberme hecho entender mejor esta vez.

Gracias.

Julio.


"Isaías" escribió en el mensaje
news:1ffe301c458a3$27c82c40$
Si es un 5% mayor a la ANTERIOR, al final es tan simple
como sacar el MAX por ITEM, ¿no?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida