76
declare @Begin smalldatetime, @End smalldateme
select @Begin=:begin, @End=:end /*
select @Begin='20100101', @End='20100201' --*/
select sr.Kod_LPU, LPU.name, convert(varchar(8),sr.period,4)as period, r.nozo,
r.norm,
r.s_day,(abs(isNull(r.norm,0)-isNull(r.s_day,0))*100)/isNull(r.norm,0) as
otkl,
left(t.text_Isch,10) , r.family, convert(varchar(8),r.date_r,4)as date_r
from reestr r
left outer join spisRee sr on sr.NumRee=r.NumRee
left outer join LPU on LPU.Kod_LPU=sr.Kod_LPU
left outer join Text_Ischod t on t.Ischod=r.Ischod
where (sr.period between @Begin and @End)
and isNull(r.norm,0)>0
and DaySt=0
and not r.Ischod in(3,4)
and not sr.Kod_LPU in (218,8226,539,8654,9172) /*
and not sr.Kod_LPU = 218 --*/
and (abs(isNull(r.norm,0)-isNull(r.s_day,0))*100)/isNull(r.norm,0)>29
order by sr.Kod_LPU, sr.period
Алгоритм формирования выборки записей с пересечением сроков
госпитализации будет заключаться в задании периода, за который
производится выборка. После чего заданные границы периода передаются
в следующий SQL-запрос[28.стр.12]:
-- Перекрест 2 сроков госпитализации
declare @PERIOD1 SMALLDATETIME,@PERIOD2 SMALLDATETIME
select @PERIOD1 = :period1, @PERIOD2 = :period2 /*
select @PERIOD1 = '20100101', @PERIOD2 = '20100301' --*/
SELECT
r1.FAMILY, convert(varchar(8),r1.DATE_R,4)as DATE_R1, R1.POLIS_NUM+';' as
polis1,
convert(varchar(8),s1.PERIOD,4)as PERIOD,
s1.Kod_LPU as kod1, L1.NAME AS lpu1, p1.PROF_NAME as spec1, r1.nozo as nozo1,
convert(varchar(8),r1.DP,4)as DP1,convert(varchar(8),r1.DW,4)as DW1,
s2.Kod_LPU as kod2, L2.NAME AS lpu2, p2.PROF_NAME as spec2,r2.nozo as nozo2,
convert(varchar(8),r2.DP,4)as DP2,convert(varchar(8),r2.DW,4)as DW2,
convert(varchar(8),s2.PERIOD,4)as PERIOD2
FROM reestr r1 (nolock)
INNER JOIN REESTR.DBO.REESTR R2 (nolock)
ON ((r1.NUMREE<>R2.NUMREE)or((r1.NUMREE=R2.NUMREE)and(r1.NUM_PP<>R2.NUM_PP)))
AND ( (r1.POLIS_NUM=R2.POLIS_NUM)OR(r1.FAMILY=R2.FAMILY AND r1.DATE_R=R2.DATE_R))
INNER JOIN REESTR.DBO.SPISREE S1 (nolock) ON S1.NUMREE =r1.NUMREE
INNER JOIN REESTR.DBO.LPU L1 (nolock) ON S1.KOD_LPU=L1.KOD_LPU
INNER JOIN REESTR.DBO.PROFIL p1 (nolock) ON p1.PROFIL=R1.PROFIL
INNER JOIN REESTR.DBO.SPISREE S2 (nolock) ON S2.NUMREE =r2.NUMREE
INNER JOIN REESTR.DBO.LPU L2 (nolock) ON S2.KOD_LPU=L2.KOD_LPU
INNER JOIN REESTR.DBO.PROFIL p2 (nolock) ON p2.PROFIL=R2.PROFIL
--where r1.DP>R2.DP AND r1.DP<R2.DW and r1.dp between @PERIOD1 and @PERIOD2
where r1.DP>=R2.DP AND r1.DP<R2.DW and s1.period=@PERIOD2 and s2.period between
@PERIOD1 and @PERIOD2
--ORDER BY s1.Kod_LPU, r1.FAMILY
ORDER BY s1.PERIOD, s1.Kod_LPU, r1.FAMILY
Алгоритм формирования выборки записей по коду нозологии
будет заключаться, во вводе шаблона кода нозологии и задании периода,
за который производится выборка. После чего шаблон и заданные
границы периода передаются в следующий SQL-запрос[30.стр.48]: