Вот результаты (не имеют 10 точек репутации). Я хотел бы исключить «дублирование», обозначенное «***». Я не уверен, как это сделать.SQL удаляет строки с одинаковыми данными (не дублирует)
Client Name----Medication 1------Medication 2
John Adderall XR Concerta
John Adderall XR Intuniv ER
John Adderall XR Risperdal ***
John Adderall XR Prazosin
John Risperdal Concerta
John Risperdal Intuniv ER
John Risperdal Adderall XR ***
John Risperdal Prazosin
А вот мой запрос
create table #temp5 (medCode int, medText varchar(500), clientid int)
insert into #temp5 (medCode, medText, clientid)
select distinct
ClientMedications.MedicationNameId,
dbo.GetMedicationName(ClientMedications.MedicationNameId),
Clients.ClientId
from
ClientMedications
join Clients on ClientMedications.ClientId = Clients.ClientId
select distinct
c.LastName + ' ,' + c.FirstName as [Client Name],
dbo.GetMedicationName(cm.MedicationNameId) as [Medication 1],
t1.medText as [Medication 2],
cmi.InteractionLevel,
cmi.ClientMedicationId2
from
Clients as c
join ClientMedications as cm on c.ClientId = cm.ClientId
join ClientMedicationInteractions as cmi
on cm.ClientMedicationId = cmi.ClientMedicationId1
join #temp5 as t1 on t1.clientId = c.ClientId
where
t1.medText != dbo.GetMedicationName(cm.MedicationNameId)
Почему у вас есть два препарата в двух отдельных таблицах в первую очередь? – GolezTrol
И если да, почему у вас все еще есть несколько строк для одного и того же клиента? – Siguza
Надеюсь, ваши столы не очень большие. У вас есть предикаты nonSARGable в ваших предложениях where и scalar. Это очень плохо с точки зрения производительности. –