Я хочу получить минимальное значение и соответствующее имя столбца из таблицы с той же строкой. См. запрос для получения минимального значения:
SELECT least(supplier1,supplier2,supplier3,supplier4,supplier5) AS minValue
FROM
priceTable
WHERE partno='OL0003';
Приведенное выше дает 20. Теперь я хочу выбрать 20 и имя столбца, которое в данном случае — Supplier1. Какой запрос мне нужно добавить или есть код рефакторинга, который может помочь сделать это сразу. Я использую mysql
После этого вам нужно выражение case
:
SELECT least(supplier1, supplier2, supplier3, supplier4, supplier5) AS minValue,
(CASE least(supplier1, supplier2, supplier3, supplier4, supplier5)
WHEN supplier1 THEN 'supplier1'
WHEN supplier2 THEN 'supplier2'
WHEN supplier3 THEN 'supplier3'
WHEN supplier4 THEN 'supplier4'
WHEN supplier5 THEN 'supplier5'
END) as column_name_for_min
FROM priceTable
WHERE partno = 'OL0003';
Это было бы намного проще, если бы вы лучше структурировали свои данные. У вас должна получиться таблица PartSuppliers
с одной строкой на деталь и на поставщика.
Затем вы можете получить наименьшее значение различными способами, например:
select ps.*
from partsuppliers ps
where ps.cost = (select min(ps2.cost)
from partsuppliers ps2
where ps2.partno = ps.partno
);
@fms Third: я хочу отобразить имя поля и минимальное значение