Запишите формулу выбора в кристалле, чтобы найти людей, пропавших без вести - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь создать формулу выбора, в которой люди будут пропускать имя документа среди всех документов, а также другие случаи, показанные ниже. Мне не ясно, как искать во всех документах этого человека, среди всех остальных людей.

Я показываю пример таблицы данных:

**Person** table
PID  ID_Number  First  Last
1    123        Joe    Shmoe
2    234        Luke   Skywalker
3    456        Yoda   Guy
4               Yogi   Gal
5    678x       Mr     Rogers


**Person_ID_Numbers** table
PID  ID_Number  Document_Name  
1    123        Verification   
1    222        License        
1    333        Training       
2    234        License        
2    444        Something      
2    555        Specialty      
3    456        License        
3    777        Something      
3    888        Other  
4               Verification
5    999        Other

Таблицы объединяются по PID. Мне нужно найти те, которые не имеют документа проверки среди всех Document_Names. Кроме того, я нахожу пустые идентификаторы в любой из таблиц, идентификаторы, которые не совпадают между таблицами для документа подтверждения, и идентификаторы, которые не имеют длину 3 цифры. Как мне проверить, не пропустили ли они Документ проверки со всем остальным?

Редактор формул выбора записей:

 //id numbers not equal between main screen and id_number screen for Verification doc
    (not({Person.ID_Number}={Person_ID_Numbers.ID_Number})
    and
    {Person_ID_Numbers.DocumentName}="Verification")
    or

    //blank id number
    isnull({Person.ID_Number})
    or({Person.ID_Number}="")
    or(CStr({Person.ID_Number})="")
    or
    isnull({Person_ID_Numbers.ID_Number})
    or({Person_ID_Numbers.ID_Number}="")
    or(CStr({Person_ID_Numbers.ID_Number})="")

//field length is not 3 for id number
or
not((length({Person.ID_Number}))=3)
or 
(
not((length({Person_ID_Numbers.ID_Number}))=3)
and
{Person_ID_Numbers.DocumentName}="Verification"
)

//it doesn't have an Verification document at all ??
or
(
not(({Person_ID_Numbers.DocumentName}="Verification") ???????IDK how to see if each person has Verification doc
)

Я читал sum на col, где id - это что-то , но они говорят о группах, и я не уверен, как делать группы, или использовать это в этом. Это то, что мне нужно сделать, и как мне сделать группу, но все же мои другие дела отображаются в отчете, которые не связаны?

Так что в приведенном выше отчете я ожидал бы PID 4, потому что у нее пустой id_number, PID 5, потому что у них 4 цифры для ID_Number, и PID 2,3,5, потому что в них отсутствует документ проверки.

Обновление: Прямо сейчас я подумываю сделать вид sql, подобный следующему, и слева соединить его в кристалле с "или" из всех этих, чтобы добавить отсутствующие документы проверки в отчет.

use "db"
select 
p.PIN
, p.Last
,p.first
,p.Middle
,pin.DocumentName 
from 
Person p
left join Person_ID_Numbers pi on pi.PIN=p.PIN

where NOT EXISTS(
   select 
     p.PIN
   , pi.DocumentName
   where DocumentName like ('%Verification%')
)

Следуя этому примеру не имеет

...