Я искал все в Google и не думаю, что использую правильное ключевое слово, чтобы получить желаемый результат. Если этот вопрос уже задавался, пожалуйста, перенаправьте меня на вопрос. Если нет, надеюсь, вы поймете, что я ищу.
Небольшая предыстория: я новичок в ie в SQL языке и некоторое время учу себя. Я работаю в психиатрической организации, и они используют медицинскую карту Credible electronici c. У него есть вкладка отчета, где я могу создать отчет об экспорте с помощью Credible «Query Builder 2.0», и это настраиваемый AD HO C. Мне удалось создать отчет, в котором без каких-либо проблем отображается список новых участников с его основным центром.
Сейчас я работаю над созданием отчета, в котором он сообщит мне, у каких участников есть только тип посещения под названием «Нет контакта». Я хочу пропустить участника, у которого есть другие типы посещений, включая «Нет контакта», и я еще не добился успеха. Я использую form_id, чтобы отфильтровать его. «354» - это тип посещения без контакта.
Мне он не нужен, чтобы показывать последнюю запись.
[client_id] | [last_name] | [first_name] | [form_id]
[ 10001 ] | [ Doe ] | [ John ] | [ 354 ]
[ 10001 ] | [ Doe ] | [ John ] | [ 445 ]
[ 10001 ] | [ Doe ] | [ John ] | [ 431 ]
[ 10001 ] | [ Doe ] | [ John ] | [ 515 ]
[ 10002 ] | [ Ghost ] | [ Jane ] | [ 354 ]
[ 10002 ] | [ Ghost ] | [ Jane ] | [ 354 ]
Результат, который я хочу видеть, - это только Джейн Призрак, потому что единственный тип посещения, который был введен во всей записи, - «Нет контакта». Я хочу, чтобы он мог пропустить Джона Доу, потому что Джон имеет более 1 разного типа посещения.
Это код, который я набрал до сих пор, я просто не знаю, какой оператор использовать, чтобы получить желаемый результат. Это оператор case или оператор Group by? это то, что я изо всех сил пытался найти. Может быть, это вообще невозможно.
Select C.client_id,
C.last_name,
C.first_name,
V.form_id as form_id
From Clients C
Left Outer Join ClientVisit CV On C.client_id = CV.client_id
Inner Join VisitType V On CV.visittype_id = V.visittype_id
Inner Join Forms F On F.form_id = V.form_id
Order By C.last_name,
C.first_name
Любое руководство будет очень признательно. Если об этом уже спрашивали, заранее прошу прощения.
РЕДАКТИРОВАТЬ Чтобы добавить код обновления
Я почти получил его, но он по-прежнему показывает отличное от 354 для идентификационного номера формы. Меня устраивает нулевое значение, но мне нужно, чтобы оно вообще не отображалось, кроме 354.
Select C.client_id,
C.last_name,
C.first_name,
P.program_code As prim_program
From Clients C
Inner Join ClientPrograms CP On C.client_id = CP.client_id
Inner Join Programs P On CP.program_id = P.program_id
Where C.client_status = 'active' And CP.primary_flag = 'true'
Except
Select CV.client_id,
CV.clientlastname,
CV.clientfirstname,
P.program_code
From ClientVisit CV
Inner Join VisitType V On CV.visittype_id = V.visittype_id
Inner Join ClientPrograms On CV.client_id = ClientPrograms.client_id
Inner Join Programs P On P.program_id = ClientPrograms.program_id
Where V.form_id <> 354
Order By prim_program,
last_name,
first_name Desc