Мне нужно выяснить: заставить работать SQL и оператора - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь заставить этот код работать.Мне нужно 11 записей, но получить 28 с этим запросом.Я могу получить 11, не комментируя встречи, но это дает неправильные записи.Предложение AND в скобках, по-видимому, не будет фильтроваться.Может ли кто-нибудь дать мне идеи о том, что я не сделал правильно? (Не самая лучшая работа):

create table #enc
(birthdate date,pidd numeric(19), id numeric(20),lastn varchar(30),firstn 
varchar(30), cdate date)

insert into #enc
select pp.Birthdate,PP.PID, pp.patientprofileid, pp.last, pp.first, 
cast(CAST(DateAdd(s, CAST(Left(d.CLINICALDATE,Len(d.CLINICALDATE)-6) AS 
DECIMAL(20,0)),'Jan 01 1960') AS DATE) as DATE) as visit
 FROM DOCUMENT d
--INNER JOIN Appointments a
--ON d.AppointmentsId = a.AppointmentsId
INNER JOIN PatientVisit v
ON d.PatientVisitId = v.PatientVisitId
inner join patientprofile pp on pp.PId = d.PID
inner join ORDERS o on o.PID= pp.PId
inner join ORDERCODES oc on oc.CODE = o.CODE

where DOCTYPE in(1)  and d.status in( 's','u','h','a') and d.USRID 
=xxxxx

((((and  o.CODE not in('00100','00103','00110','00113','00126'))))

 and oc.ORDERTYPE not in('t')

AND CAST(VISIT AS DATE) BETWEEN '10/01/2018' AND '10/31/2018' 



 select distinct cdate, * from #enc order by lastn

1 Ответ

0 голосов
/ 29 ноября 2018

Возможно, таблица документов и таблица встреч имеют отношение многие ко многим, что означает, что документ может иметь несколько записей встреч, связанных с ним.Это приведет к дублированию записей.попробуйте это:

create table #enc
(birthdate date,pidd numeric(19), id numeric(20),lastn varchar(30),first 
 nvarchar(30), cdate date)

insert into #enc
select 
    pp.Birthdate,PP.PID, pp.patientprofileid, pp.last, pp.first, 
    cast(CAST(DateAdd(s, CAST(Left(d.CLINICALDATE,Len(d.CLINICALDATE)-6) AS DECIMAL(20,0)),'Jan 01 1960') AS DATE) as DATE) as visit
FROM DOCUMENT d
INNER JOIN ( 
    select distinct AppointmentsId from Appointments
) a ON d.AppointmentsId = a.AppointmentsId
INNER JOIN PatientVisit v
ON d.PatientVisitId = v.PatientVisitId
inner join patientprofile pp on pp.PId = d.PID
inner join ORDERS o on o.PID= pp.PId
inner join ORDERCODES oc on oc.CODE = o.CODE

where DOCTYPE in(1)  and d.status in( 's','u','h','a') and d.USRID 
=xxxxx

((((and  o.CODE not in('00100','00103','00110','00113','00126'))))

 and oc.ORDERTYPE not in('t')

AND CAST(VISIT AS DATE) BETWEEN '10/01/2018' AND '10/31/2018' 



 select distinct cdate, * from #enc order by lastn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...