group by с максимальной датой и последняя цена на цену

Я нуждаюсь в том, чтобы получить цену на цену реестра с большей датой, для этого я использую следующие подмостки:

Таблица ingreso_mercancias_cabecera

select * from ingresos_mercancias_cabecera 

introducir la descripción de la imagen aquí

Таблица ingresos_mercancias_detalle

select * from ingresos_mercancias_detalle 

introducir la descripción de la imagen aquí

Таблица продукты

select * from productos

introducir la descripción de la imagen aquí

и то, что я хочу получить, так это таблица, где он был получен codigo_barras, precio_entrada, и датируй

для этого я использую эту консультацию:

select p.codigo_barras, 
            i.precio_entrada, 
            max(ic.fecha) as fecha
from ingresos_mercancias_detalle i, 
ingresos_mercancias_cabecera ic, productos p  
where i.id_ingreso_cabecera=ic.id 
and i.id_producto=p.id 
group by i.precio_entrada, p.codigo_barras, p.id
order by p.id

но он дает мне как оказанный это:

introducir la descripción de la imagen aquí

Я не хочу, чтобы выделенные в красном появились у меня в консультации.

Спасибо.

Query для создания DB.

CREATE TABLE familias
(
  id serial NOT NULL,
  nombre character varying(50),
  CONSTRAINT pkfamilias PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);

CREATE TABLE marcas
(
  id serial NOT NULL,
  nombre character varying(50),
  CONSTRAINT pkmarcas PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);

CREATE TABLE productos
(
  id serial NOT NULL,
  id_marca integer NOT NULL,
  id_familia integer NOT NULL,
  codigo_barras character varying,
  descripcion character varying(500),
  precio_costo double precision,
  precio_venta double precision,
  precio_mayorista double precision,
  precio_credito double precision,
  cant_paquete integer,
  iva integer,
  CONSTRAINT clave_primaria PRIMARY KEY (id),
  CONSTRAINT fk_familia FOREIGN KEY (id_familia)
      REFERENCES familias (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_marca FOREIGN KEY (id_marca)
      REFERENCES marcas (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT productos_codigo_barras_key UNIQUE (codigo_barras)
)
WITH (
  OIDS=FALSE
);


CREATE TABLE ingresos_mercancias_cabecera
(
  id serial NOT NULL,
  no_factura character varying(100),
  id_proveedor integer,
  total double precision,
  fecha date,
  hora character varying(8),
  CONSTRAINT pk_ingresos PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);

CREATE TABLE ingresos_mercancias_detalle
(
  id serial NOT NULL,
  id_producto integer,
  id_ingreso_cabecera integer,
  cantidad double precision,
  precio_iva double precision,
  precio_entrada double precision,
  CONSTRAINT pk_ingresos_detalle PRIMARY KEY (id),
  CONSTRAINT fk_ingreso_cabecera FOREIGN KEY (id_ingreso_cabecera)
      REFERENCES ingresos_mercancias_cabecera (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT fk_producto FOREIGN KEY (id_producto)
      REFERENCES productos (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
  OIDS=FALSE
);
0
задан 28.12.2019, 17:26
1 ответ

То, что ты estГЎ не будучи состоит в том, чтобы определять, которые являются датами mГЎximas для каждого продукта в таблице детали, и выдавать консультацию с этими датами.

query не это probГ©, но должен будь быть что-то asГ-:

select p.codigo_barras, 
            i.precio_entrada, 
            maximos.fecha
from ingresos_mercancias_detalle i, 
ingresos_mercancias_cabecera ic, 
productos p, 
(select p.id, p.codigo_barras, max(ic.fecha) as fecha
    from ingresos_mercancias_detalle i, 
    ingresos_mercancias_cabecera ic, 
    productos p  
    where i.id_ingreso_cabecera=ic.id 
    and i.id_producto=p.id 
    group by p.id, p.codigo_barras
) maximos -- Este subquery extrae la fecha máxima por cada producto.
where i.id_ingreso_cabecera=ic.id 
and i.id_producto=p.id 
and ic.producto_id = maximos.id -- Acá filtras los resultados para que
and ic.fecha = maximos.fecha    -- quedarte con los precios de las fechas máximas

В любом случае, если podГ©s agregГЎ они "поверьте table" в вопрос asГ - я скроллирую query и я это могу debuguear.

3
ответ дан 29.12.2019, 09:10
  • 1
    уже я буду добавлять, что верьте в них table в первоначальный вопрос – Cesar Martinez Quiroga 28.12.2019, 17:21

Теги

Похожие вопросы