Сравнение 2 столбцов в Hyperion (Oracle)

У меня есть два столбца в запросе.
У меня есть 2 поля (Поле 1 и Поле 2). Что я хочу сделать, так это:

если поле 1 пустое, используйте поле 2, но

если он не пуст, я хочу, чтобы он заполнил его полем 1.

Я уверен, что это можно сделать в вычисляемом столбце, но безуспешно с логикой (пока).


person Shelley    schedule 21.10.2015    source источник
comment
мой ответ ответил на ваш вопрос? Может быть, вы искали что-то в разделе Запрос, а не набор результатов? В таком случае мне нужно больше информации.   -  person undrline - Reinstate Monica    schedule 03.07.2018


Ответы (1)


«Пустой» может означать многое. Вы можете попробовать проверить наиболее распространенные из них.

В наборе результатов это проверит несколько вещей.

    if( Field_1 == null || Field_1.replace(/\s/gi,'') == '' || Field_1 == NaN )
    {
      Field_2;
    }
    else
    {
      Field_1;
    }
  1. Во-первых, действительно ли ваше поле пусто и не содержит данных. Результаты Hyperion задают вычисляемые элементы, такие как «null», в нижнем регистре.
  2. Во-вторых, есть ли у вас данные, но они невидимы. Обычно это пустые строки, но это также могут быть и другие пробелы, поэтому мы посмотрим, приведет ли замена всех пробелов (без изменения данных, просто для сравнения) пустыми строками к пустой строке. /\s/gi является регулярным выражением... это означает глобальное "пробел" (то есть: каждое совпадение), без учета регистра.
  3. Наконец (и лично я никогда не сталкивался с этим, но мне сказали, что это может произойти), проверьте, есть ли ответ Not-a-Number (NaN). Это своего рода ошибка, которая может появляться в данных, считается значением, но может не отображаться на вашем экране.

Если вы делаете это в разделе «Запрос», вам придется написать его на SQL и сопоставить синтаксис с вашим источником данных (Oracle, DB2, Sybase и т. д.), но концепция та же.

person undrline - Reinstate Monica    schedule 25.07.2016