Возвращает имя столбца для минимального значения из той же строки в SQL - PullRequest
0 голосов
/ 09 апреля 2019

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

SELECT least(supplier1,supplier2,supplier3,supplier4,supplier5) AS minValue 
FROM 
priceTable  
WHERE partno='OL0003';

Выше приведено 20. Теперь я хочу выбрать 20 и имя столбца, который в этом случае будет Supplier1. Какой запрос мне нужно добавить или есть код рефакторинга, который может помочь сделать это сразу. Я использую mysql enter image description here

1 Ответ

3 голосов
/ 09 апреля 2019

После этого вам нужно выражение 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
                );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...