我需要列值相同的随机列。这里d1,d2,d3列的值是相同的。最小列仅变为d1列,而不是d2或d3。

id  date                    name    d1  d2  d3  d4  least_val   least_col
1   2017-02-10T09:00:00Z    bimal   1   2   3   4   1           d1
2   2017-02-10T09:00:00Z    amal    8   7   4   5   8           d1
3   2017-02-10T09:00:00Z    kamal   9   9   11  12  9           d1

    select f.*,
       (case ff.least_col
             when 'd1' then d1
             when 'd2' then d2
             when 'd3' then d3
             when 'd4' then d4
        end) as least_val,
        ff.least_col
from formal f cross join
     (select least(sum(d1), sum(d2), sum(d3), sum(d4)) as least_val,
             (case least(sum(d1), sum(d2), sum(d3), sum(d4))
                   when sum(d1) then 'd1'
                   when sum(d2) then 'd2'
                   when sum(d3) then 'd3'
                   when sum(d4) then 'd4'
              end) as least_col
      from formal
     ) ff;

See the SQL Fiddle
是否有可能随机得到least_col这意味着最少的列要么d1要么d2要么d3或者d1并不总是least_col。我想说,在值相同的情况下,每次执行时间都会改变?

最佳答案

试试这个答案,希望这对你有帮助:

select *,Case When d1 < d2 And d1 < d3 And d1<d4 Then d1
            When d2 < d1 And d2 < d3 And d2<d4 Then d2
            When d3 < d1 And d3 < d2 And d3<d4 Then d3
            Else d4 end Least_Value
         ,Case When d1 < d2 And d1 < d3 And d1<d4 Then 'd1'
            When d2 < d1 And d2 < d3 And d2<d4 Then 'd2'
            When d3 < d1 And d3 < d2 And d3<d4 Then 'd3'
            Else 'd4' end Least_Column
from formal

检查答案:
SQL Fiddle

关于mysql - 选择最小总值相同的随机列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47277482/

10-16 23:05