Я пытаюсь присвоить право fifo_cost
в определенном порядке на основании разницы между fifo_in_date
и order_date
: в fifo_cost
связанной с наименьшей разницей между order_date
и fifo_date_in
должны быть отнесены к этому порядку.MySQL, имеющий утверждение не возвращая никаких строк
Следующий фрагмент mysql не возвращает никакой записи. Я ожидаю, что он вернет эту запись с fifo_date_in
ближе всего к order_date
, но, очевидно, я что-то упустил.
drop table if exists tmp;
create table tmp (
order_sequence int,
order_number int,
order_date date,
fifo_date_in date,
fifo_cost float);
INSERT INTO tmp (order_sequence, order_number, order_date, fifo_date_in, fifo_cost) VALUES (5613, 561, '2013-01-02','2009-01-01',1.55);
INSERT INTO tmp (order_sequence, order_number, order_date, fifo_date_in, fifo_cost) VALUES (5613, 561, '2013-01-02','2009-02-01',2.55);
INSERT INTO tmp (order_sequence, order_number, order_date, fifo_date_in, fifo_cost) VALUES (5613, 561, '2013-01-02','2009-03-01',3.55);
INSERT INTO tmp (order_sequence, order_number, order_date, fifo_date_in, fifo_cost) VALUES (5613, 561, '2013-01-02','2009-04-01',4.55);
INSERT INTO tmp (order_sequence, order_number, order_date, fifo_date_in, fifo_cost) VALUES (5613, 561, '2013-01-02','2009-05-01',5.55);
SELECT
order_sequence, order_number, order_date, fifo_date_in, fifo_cost, datediff(order_date,fifo_date_in) as ddiff
FROM tmp
GROUP BY order_sequence, order_number, order_date
HAVING datediff(order_date,fifo_date_in) = min(datediff(order_date,fifo_date_in))
Прежде всего, я думаю, что вам нужно включить fifo_date_in и fifo_cost в вашу группу по статье, поскольку они являются регулярными столбцы без каких-либо агрегатных функций. Во-вторых, если вы выполняете запрос без предложения предложения в конце, это дает какие-либо результаты? – JanR