Это несколько болезненно в MySQL.Один из методов - это отключить данные, отфильтровать и агрегировать.Другой способ - сделать несколько трюков.
К сожалению, LEAST()
возвращает NULL
, если любое значение равно NULL
.Но вы можете использовать магическое значение:
select least(coalesce(nullif(sup1, 0), 999999),
coalesce(nullif(sup2, 0), 999999),
coalesce(nullif(sup3, 0), 999999),
coalesce(nullif(sup4, 0), 999999),
coalesce(nullif(sup5, 0), 999999)
) as minimumValue,
(case least(coalesce(nullif(sup1, 0), 999999),
coalesce(nullif(sup2, 0), 999999),
coalesce(nullif(sup3, 0), 999999),
coalesce(nullif(sup4, 0), 999999),
coalesce(nullif(sup5, 0), 999999)
)
when sup1 then 'sup1'
when sup2 then 'sup2'
when sup3 then 'sup3'
when sup4 then 'sup4'
when sup5 then 'sup5'
end) as Supplier
from price_charts pc
where partno = 'OL0002';
Примечание. У вас плохая модель данных.У вас должна быть другая таблица с одной строкой для каждого поставщика и цены, а не для переноса значений в отдельные столбцы.