Как исправить вычисляемое поле, которое проверяет дату в заказе? - PullRequest
1 голос
/ 09 июля 2019

Структура данных похожа на ту, где посещаемые штаты следуют в следующем порядке: Гавайи -> Калифорния -> Техас -> Нью-Йорк.

| Name       | State       | Date         |
|:-----------|------------:|:------------:|
| Alice      |       Hawaii|   1/1/2019   |
| Alice      |   California|   1/3/2019   |
| Alice      |        Texas|   1/5/2019   |
| Alice      |     New York|   1/7/2019   |
| Bobby      |       Hawaii|   3/20/2019  |
| Bobby      |   California|   3/23/2019  |
| Bobby      |        Texas|              |
| Bobby      |     New York|              |
| Carl       |       Hawaii|   2/10/2019  |
| Carl       |   California|   2/12/2019  |
| Carl       |        Texas|   2/12/2019  |
| Carl       |     New York|              |

Я хочу показать только дату для людей, которые ЕСТЬеще не был в Нью-Йорке, но посещал все остальные места в Таблице.

В этом случае это будет Карл, так как он посетил Гавайи, Калифорнию и Техас, но еще не Нью-Йорк.

Алиса не будет показана, поскольку она уже побывала в Нью-Йорке, а Бобби не должен быть показан, поскольку он еще не был в Техасе

Я попытался создать вычисляемое поле и перетащить его на фильтр.

IF (ISNULL([Date]) AND [State] = "New York") AND

(NOT ISNULL([Date]) AND 
([State] = "Hawaii" OR
[State] = "California" OR
[State] = "Texas"))

THEN
[Date]

END

Я ожидаю, что выходное вычисленное поле вернет мне следующий столбец DATE:

| Name       | State       | Date         |
|:-----------|------------:|:------------:|
| Alice      |       Hawaii|              |
| Alice      |   California|              |
| Alice      |        Texas|              |
| Alice      |     New York|              |
| Bobby      |       Hawaii|              |
| Bobby      |   California|              |
| Bobby      |        Texas|              |
| Bobby      |     New York|              |
| Carl       |       Hawaii|   2/10/2019  |
| Carl       |   California|   2/12/2019  |
| Carl       |        Texas|   2/12/2019  |
| Carl       |     New York|              |

но все, что я получил, было нулевым, так что что-то в моей логике неверно, но я не знаю, что.

1 Ответ

1 голос
/ 10 июля 2019

Положите Имя на полке фильтра. Выберите «Использовать все» и перейдите на вкладку «Условие». Введите следующую формулу для условия.

max([State] = "Hawaii") and max([State] = "California") and max([State] = "Texas") and not max([State] = "New York")

В качестве альтернативы, вы можете создать набор на основе поля «Имя», содержащего людей, которые посетили нужные вам состояния - используя первые 3 строки в условии выше. И еще один набор, также основанный на поле «Имя», в котором содержатся люди, посетившие государства, которые вам не нужны. Затем сделайте комбинированный набор, в котором люди в первом наборе минус люди во втором наборе.

Затем вы можете использовать наборы в фильтрах, вычисляемых полях и на полках по желанию.

Кстати, max ([условие]) - это истина, если любая запись данных удовлетворяет, поскольку значение True рассматривается как большее, чем значение False. min ([условие]) истинно, если все записи данных удовлетворяют [условие]

...