SQL - Obtener las ultimas compras

 
Vista:
sin imagen de perfil

Obtener las ultimas compras

Publicado por pedro jorge (2 intervenciones) el 05/11/2016 06:46:59
Que tal, llevo una semana y no logro armar una consulta que me de el ultimo proveedor al cual se le compro, tengo una consulta previa donde se encuentran los articulos que fueron adquiridos de acuerdo a lo que el usuario requiere.

Cabecero

folio;fecha; proveedor
1;20161001;1
2;20161002;2
3;20161002;1
4;20161005;3
5;20161007;2

detalle
folio;clave;cantidad
1;01;5
2;01;7
2;02;7
3;02;4
4;01;9(*)
4;02;7
4;03;2
5;02;8(*)
5;03;9(*)

La idea es que el resultado sea:

clave;proveedor;cant
01;1;3
02;2;8
03;2,9

El campo en comun es folio y requiero determinar cuales fueron los ultimos provedores y se determina por la fecha mas reciente.

Lo ideal seria que se pudiera hacer asi:
select d.clave; c.proveedor; max(c.fecha), d.cant from ccompras c inner join dcompras d on c.folio = d.folio group by d.clave

Pero group by requiere que todos los campos sin funcion (max,count) se incluyan, alguna sugerencia?

El motor de db es ms sql.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 42
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Obtener las ultimas compras

Publicado por Jose Luis (16 intervenciones) el 07/11/2016 15:59:12
Hola,

Se puede hacer de todo en sql pero es confuso como lo expones.

1.- (*) quiere decir salidas ?
2.- Que proveedor quieres? al que compraste primero o al que compraste al ultimo, porque en el ejemplo aparece el primero que le compraste
3.- En ejemplo de salida la cantidad para clave 1 cuadra 5+7-9 = 3, pero la segunda 7+4+7-8=10 no cuadra, la tercera 2-9 = -11 no cuadra

Es confuso

Saludos
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Obtener las ultimas compras

Publicado por pedro jorge (2 intervenciones) el 07/11/2016 16:12:41
Gracias por comentar, requiero determinar el ultimo proveedor al cual se le compro un producto, el * indica el resultado que espero obterner, ejemplifico de nuevo

Fecha - Proveedor (cabecero)
1/10/16 - 1
Articulo - Cantidad (detalle)
art1 - 10
art5 - 7

3/10/16 - 2
art1 - 5
art3 - 7

6/10/16 - 1
art2 - 6
art5 - 4

El resultado de que deseo es:
articulo - prov - fecha
art1 - 2 - 3/10/16
art2 - 1 - 6/10/16
art3 - 2 - 3/10/16
art5 - 1 - 6/10/16
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 42
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Obtener las ultimas compras

Publicado por José Luis (16 intervenciones) el 07/11/2016 18:45:19
Primera consulta

SELECT CABECERO.FOLIO, FECHA, PROVEEDOR, ARTICULO, CANTIDAD
FROM CABECERO, DETALLE
WHERE CABECERO.FOLIO = DETALLE.FOLIO
ORDER BY ARTICULO, FECHA

SEGUNDO CONSULTA

SELECT ARTICULO, MAX(CABECERO.FOLIO) AS FOLIO_MAXIMO
FROM CABECERO, DETALLE
WHERE CABECERO.FOLIO = DETALLE.FOLIO
GROUP BY ARTICULO

CONSULTA FINAL
SELECT DISTINCT A.ARTICULO, B.PROVEEDOR, B.FECHA
FROM (SELECT ARTICULO, MAX(CABECERO.FOLIO) AS FOLIO
FROM CABECERO, DETALLE
WHERE CABECERO.FOLIO = DETALLE.FOLIO
GROUP BY ARTICULO) A,
(SELECT CABECERO.FOLIO, FECHA, PROVEEDOR, ARTICULO, CANTIDAD
FROM CABECERO, DETALLE
WHERE CABECERO.FOLIO = DETALLE.FOLIO
ORDER BY ARTICULO, FECHA) B
WHERE A.FOLIO = B.FOLIO

LO HICE CON EL SQL DEL ACCESS


Saludos
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar