Таблица вычисляемого поля - по нескольким показателям - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь взять минимум из набора полей, исключая 0.Я довольно новичок в использовании вычисляемых полей в таблице.

Мне удалось связать функцию min следующим образом:
MIN(MIN(MIN([a],[b]), [c]), [d]) etc...

Однако я не могу найти способ отфильтровывать 0 для каждой из моих мер,Я пытался что-то с REGEXP_REPLACE.Я также попытался установить большее значение IF THEN для значений, например:

IF [a] > 0 THEN [a]  
IF [b] > 0 THEN [b]

, чтобы новые значения были обнулены.Но это тоже не сработало из-за моей необходимости объединить их все в этом вычисляемом поле.Какой функциональный способ рассчитать что-то вроде этого?Предполагая, что я не могу изменить данные за пределами Таблицы, как можно обработать изменение нескольких полей, как это?


Желаемый результат:
(псевдокод)

given that a,b,c,d,e = 15,0,10,0,25  
Min_No0([a],[b],[c],[d],[e],...) = 10

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Вот решение, которое ищет MIN () между столбцами [a] [b] и [c], исключая и значения, которые равны нулю.

MIN(MIN(IF [a] !=0 THEN [a]
        ELSEIF [b] !=0 THEN [b]
        ELSEIF [c] !=0 THEN [c]
        END,

    IF [b] !=0 THEN [b]
        ELSEIF [c] !=0 THEN [c]
        ELSEIF [a] !=0 THEN [a]
        END),

    IF [c] !=0 THEN [c]
        ELSEIF [a] !=0 THEN [a]
        ELSEIF [b] !=0 THEN [b]
        END)

Внутренний MIN () сравнивает[а] и [б].Если любое из этих чисел равно нулю, оно заменяет другое число, при условии, что это число также не равно нулю.Внешний MIN () сравнивает [c] с меньшим числом из внутреннего MIN ().

Если [a], [b] и [c] равны нулю, результат, конечно, будет равен «Null».

0 голосов
/ 01 марта 2019

Хорошо, я смог успешно сделать следующее:

MIN(MIN(IF [a] = 0 THEN 9999999 ELSE [a] END, 
IF [b] = 0 THEN 9999999 ELSE [b] END),
IF [c] = 0 THEN 9999999 ELSE [c] END)

Путем цепочки min и наличия оператора if в функции min.Я уверен, что это не лучший способ, но это сработало.

...