My table table1
is like below
id d1 d2 d3 d4
1 6 7 8 9
2 13 10 11 12
3 16 17 14 15
4 19 20 21 18
Use case
:
SELECT d1, d2, d3, d4, least(d1, d2, d3, d4) as min,
case when least(d1, d2, d3, d4)=d1 then 'd1'
when least(d1, d2, d3, d4)=d2 then 'd2'
when least(d1, d2, d3, d4)=d3 then 'd3'
when least(d1, d2, d3, d4)=d4 then 'd4'
end as min_col
FROM table1
OR
case least(d1, d2, d3, d4)
when d1 then 'd1'
when d2 then 'd2'
when d3 then 'd3'
when d4 then 'd4'
end as min_col
Sample result in SQL Fiddle