edit
This commit is contained in:
303
up_ds_EkzmkSelect_full.sql
Normal file
303
up_ds_EkzmkSelect_full.sql
Normal file
@@ -0,0 +1,303 @@
|
||||
-- =============================================
|
||||
-- Author:
|
||||
-- Create date:
|
||||
-- DatabaseModel: Metr7
|
||||
-- Description:
|
||||
-- Use:
|
||||
-- Changes:
|
||||
-- 20.05.2021 Сафонов А.Е. DATAMODEL70-136 Исправлена ошибка с пересечением. Отформатирован код
|
||||
-- 12.05.2021 Седаков А.В. DATAMODEL70-155 Отказ от физического удаления записей в экземплярах СИ.
|
||||
-- 13.10.2020 Седаков А.В. ASUMS70-209. Из таблицы EKZMK удалено поле MKPRV и добавлены поля IDSPVDSBMK, PRCHNPGDN.
|
||||
-- 04.09.2020 Седаков А.В. ASUMS70-209. Добавлено новое поле MKPRV из таблицы EKZMK.
|
||||
-- 18.03.2020 Седаков А.В. DATAMODEL70-28. Добавлены 2 новых поля из таблицы EKZMK: DPZNmp, HRTCmp.
|
||||
-- 13.02.2020 Сафонов А.Е. ELMETRO-5 Добавлен GUID организации,
|
||||
-- убрана "звездочка" при выборке из uf_vw_FRPD_ms() и uf_vw_SPMU_ms()
|
||||
-- 03.02.2020 Седаков А.В. DATAMODEL70-28. Добавлены новые поля из таблицы EKZMK.
|
||||
-- =============================================
|
||||
|
||||
CREATE PROCEDURE dbo.up_ds_EkzmkSelect
|
||||
@fltr varchar(MAX) = '',
|
||||
@vbr varchar(MAX) = '',
|
||||
@prm varchar(MAX) = '',
|
||||
@nmid varchar(200) = '',
|
||||
@nnid int = 0,
|
||||
@per varchar(2) = '0', --"0" - нет пересечений, "1" - пересечение,
|
||||
--"-1" - НЕпересечение, "2" - заполнить таблицу пересечения.
|
||||
@idspvdd varchar(20) = '0'
|
||||
WITH EXECUTE AS 'metr6'
|
||||
AS
|
||||
BEGIN
|
||||
set dateformat dmy
|
||||
set nocount on
|
||||
|
||||
declare @systemUser varchar(100)
|
||||
execute as caller
|
||||
select @systemUser = CAST(SYSTEM_USER AS nvarchar(MAX))
|
||||
revert
|
||||
|
||||
declare @s varchar(MAX)
|
||||
declare @select varchar(MAX)
|
||||
|
||||
if @per = '2' -- при заполнении данных для пересечения идентификатор в фильтре не учитывается
|
||||
begin
|
||||
set @nmid = ''
|
||||
set @nnid = 0
|
||||
end
|
||||
set @fltr = dbo.uf_GetSelectFltr_dk(@fltr, @vbr, @prm, @nmid, @nnid)
|
||||
|
||||
set @s = '
|
||||
IF OBJECT_ID(N''#TempFRPD'', N''U'') IS NOT NULL
|
||||
DROP TABLE #TempFRPD;
|
||||
CREATE TABLE #TempFRPD
|
||||
(
|
||||
IDFRPD int PRIMARY KEY NOT NULL,
|
||||
IDFRPDR int,
|
||||
NMFRPD varchar(80) collate Cyrillic_General_CI_AS,
|
||||
LEVEL int,
|
||||
KDFRPDLC varchar(20) collate Cyrillic_General_CI_AS,
|
||||
PATH VARCHAR(8000) collate Cyrillic_General_CI_AS,
|
||||
GUIDFRPD UNIQUEIDENTIFIER
|
||||
);
|
||||
CREATE NONCLUSTERED INDEX RIndex ON #TempFRPD (IDFRPDR)
|
||||
INSERT INTO #TempFRPD SELECT IDFRPD, IDFRPDR, NMFRPD, LEVEL, KDFRPDLC, PATH, GUIDFRPD FROM uf_vw_FRPD_ms();
|
||||
|
||||
IF OBJECT_ID (N''#TempSPMU'', N''U'') IS NOT NULL
|
||||
DROP TABLE #TempSPMU;
|
||||
CREATE TABLE #TempSPMU
|
||||
(
|
||||
nmmu varchar(50) collate Cyrillic_General_CI_AS,
|
||||
IDSPMU int PRIMARY KEY NOT NULL,
|
||||
IDSPMUR int,
|
||||
LEVEL int,
|
||||
PATH VARCHAR(8000) collate Cyrillic_General_CI_AS,
|
||||
mu1 varchar(50) collate Cyrillic_General_CI_AS,
|
||||
mu2 varchar(50) collate Cyrillic_General_CI_AS,
|
||||
mu3 varchar(50) collate Cyrillic_General_CI_AS,
|
||||
mu4 varchar(50) collate Cyrillic_General_CI_AS
|
||||
);
|
||||
CREATE NONCLUSTERED INDEX RIndex ON #TempSPMU (IDSPMUR)
|
||||
INSERT INTO #TempSPMU SELECT nmmu, IDSPMU, IDSPMUR, LEVEL, PATH, mu1, mu2, mu3, mu4 FROM uf_vw_SPMU_ms();
|
||||
|
||||
IF OBJECT_ID (N''#TempEkzmkShfkl'', N''U'') IS NOT NULL
|
||||
DROP TABLE #TempEkzmkShfkl;
|
||||
CREATE TABLE #TempEkzmkShfkl
|
||||
(
|
||||
IDEKZMK int,
|
||||
NNNKL nvarchar(30),
|
||||
SHFKL varchar(30) collate Cyrillic_General_CI_AS,
|
||||
DTPREVMK datetime
|
||||
);
|
||||
|
||||
insert into #TempEkzmkShfkl(idekzmk, SHFKL, NNNKL, DTPREVMK)
|
||||
select IDEKZMK, SHFKL, NNNKL, DTMKFK from (
|
||||
select ekzmk.IDEKZMK, e2.SHFKL, e2.NNNKL, e2.dtmkfk,
|
||||
ROW_NUMBER() over (partition by ekzmk.idekzmk order by e2.dtmkfk desc) nn
|
||||
from EKZMK
|
||||
left join EKZMK e2 on ekzmk.IDEKZ = e2.IDEKZ and e2.GDN = 1 and e2.DTMKFK < ekzmk.dtmkfk
|
||||
) s
|
||||
where nn = 1;
|
||||
|
||||
IF OBJECT_ID (N''#TempEkzmkNNDMS'', N''U'') IS NOT NULL
|
||||
DROP TABLE #TempEkzmkNNDMS;
|
||||
CREATE TABLE #TempEkzmkNNDMS
|
||||
(
|
||||
IDEKZMK int,
|
||||
NNDMS varchar(30) collate Cyrillic_General_CI_AS,
|
||||
dtd datetime,
|
||||
nmvdd varchar(50) collate Cyrillic_General_CI_AS ,
|
||||
nmfrd varchar(50) collate Cyrillic_General_CI_AS,
|
||||
PTTXDMS varchar(max) collate Cyrillic_General_CI_AS
|
||||
);
|
||||
|
||||
insert into #TempEkzmkNNDMS(idekzmk, NNDMS, dtd, nmvdd, nmfrd, PTTXDMS)
|
||||
select idod, nnd, dtd, nmvdd, nmfrd, PTTXDMS from (
|
||||
select IDOD, NND, dtd, nmvdd, nmfrd, pttxdms,
|
||||
ROW_NUMBER() over (partition by idod order by dtd desc) nn
|
||||
from DMS
|
||||
join VDODVDD vdd on vdd.IDVDODVDD = dms.IDVDODVDD
|
||||
join FRDMS on frdms.IDFRDMS = dms.IDFRDMS
|
||||
join SPVDD on spvdd.IDSPVDD = frdms.IDSPVDD
|
||||
where IDSPVDOD = 2 and spvdd.IDSPVDD in (2,6,8)
|
||||
) s
|
||||
where nn = 1;
|
||||
'
|
||||
set @s = @s + '
|
||||
SELECT DISTINCT
|
||||
SPOI.KDOI,
|
||||
SPNMTP.NMTP,
|
||||
SPKT.NMKT,
|
||||
SPKI.NMKI,
|
||||
TIPS.TP,
|
||||
TPRZ.DPZN,
|
||||
TPRZ.HRTC,
|
||||
EKZ.IDEKZ,
|
||||
EKZ.NNZV,
|
||||
EKZ.NNIN,
|
||||
EKZ.KLSIPR,
|
||||
|
||||
SPSS.NMSS,
|
||||
SPTS.NMTS,
|
||||
|
||||
VL.NMFRPD AS FRPDVL,
|
||||
MKF.NMFRPD AS FRPDMK,
|
||||
VL.PATH AS VL_PATH,
|
||||
MKF.PATH AS MKF_PATH,
|
||||
VD.PRFIO AS PRSNVD,
|
||||
|
||||
sD.PRFIO AS PRSNSD,
|
||||
pr.PRFIO AS PRSNPR,
|
||||
Vy.PRFIO AS PRSNVY,
|
||||
ssmp.NMSS as NMSSMP,
|
||||
tsmp.NMTS as NMTSMP,
|
||||
|
||||
GRSI.NMGRSI,
|
||||
GRSI.KDGRSI,
|
||||
KSPRL.KDKSPRL,
|
||||
SPVDMK.NMVDMK,
|
||||
EKZMK.PZMC,
|
||||
SPMPOB.NMMPOB,
|
||||
PRSN.PRFIO,
|
||||
|
||||
SPKMMK.KMMK,
|
||||
EKZMK.NNZVPV,
|
||||
SPVDKL.NMVDKL,
|
||||
EKZMK.NNNKL,
|
||||
EKZMK.DTMKFK,
|
||||
EKZMK.DTMKPL,
|
||||
EKZMK.DTPRM,
|
||||
EKZMK.DTVDM,
|
||||
EKZMK.GDN,
|
||||
EKZMK.STMK,
|
||||
EKZMK.STMKDP,
|
||||
EKZMK.NCSRMK,
|
||||
EKZMK.PRMK,
|
||||
EKZMK.SHFKL,
|
||||
SPVDMC.NMVDMC,
|
||||
|
||||
MU.MU1 ''MU1'',
|
||||
MU.MU2 ''MU2'',
|
||||
MU.MU3 ''MU3'',
|
||||
MU.MU4 ''MU4'',
|
||||
MU.PATH,
|
||||
|
||||
DTMAXM,
|
||||
MU.IDSPMU,
|
||||
EKZMK.IDEKZMK,
|
||||
EKZMK.IDGRSI,
|
||||
EKZMK.IDKSPRL,
|
||||
EKZMK.IDSPVDMK,
|
||||
EKZMK.IDSPVDMC,
|
||||
EKZMK.IDFRPD,
|
||||
EKZMK.IDSPMPOB,
|
||||
EKZMK.IDPRSN,
|
||||
EKZMK.IDSPKMMK,
|
||||
EKZMK.IDEKZRM,
|
||||
EKZMK.IDSPVDKL,
|
||||
EKZ.IDSPKT,
|
||||
EKZ.IDTPRZ,
|
||||
EKZ.IDSPSS,
|
||||
EKZ.IDSPTS,
|
||||
EKZ.IDFRPDV,
|
||||
EKZMK.IDPRSNVD,
|
||||
TPRZ.IDTIPS,
|
||||
|
||||
ekzmk.idprsnsd,
|
||||
ekzmk.idprsnpr,
|
||||
ekzmk.idprsnvy,
|
||||
ekzmk.idsptsmp,
|
||||
ekzmk.idspssmp ,
|
||||
|
||||
FRPDRK.FULLNAME,
|
||||
FRPDRK.ADRES,
|
||||
FRDSPV.FIORKMS,
|
||||
FRDSPV.DLRKMS,
|
||||
|
||||
nnd.nmvdd,
|
||||
nnd.nmfrd,
|
||||
nnd.nndms,
|
||||
nnd.dtd,
|
||||
nnd.pttxdms,
|
||||
|
||||
EKZMK.DSEKZMK,
|
||||
EKZMK.DTOTM,
|
||||
EKZMK.DTVZM,
|
||||
EKZMK.IDPRSNOTM,
|
||||
EKZMK.IDPRSNVZM,
|
||||
EKZMK.NRVRMNDmp,
|
||||
EKZMK.NRVRMmp,
|
||||
EKZMK.DTZVPV,
|
||||
EKZMK.VRMKFK,
|
||||
EKZMK.IDKSP,
|
||||
EKZMK.DPZNmp,
|
||||
EKZMK.HRTCmp,
|
||||
EKZMK.IDSPVDSBMK,
|
||||
SPVDSBMK.NMVDSBMK,
|
||||
EKZMK.PRCHNPGDN
|
||||
|
||||
FROM EKZMK
|
||||
|
||||
INNER JOIN EKZ ON EKZMK.IDEKZ=EKZ.IDEKZ and ISNULL(EKZ.IsDeleted, 0) = 0
|
||||
LEFT JOIN GRSI ON EKZMK.IDGRSI=GRSI.IDGRSI
|
||||
LEFT JOIN SPVDMC ON EKZMK.IDSPVDMC=SPVDMC.IDSPVDMC
|
||||
LEFT JOIN KSPRL ON EKZMK.IDKSPRL=KSPRL.IDKSPRL
|
||||
INNER JOIN SPVDMK ON EKZMK.IDSPVDMK=SPVDMK.IDSPVDMK
|
||||
LEFT JOIN SPMPOB ON EKZMK.IDSPMPOB=SPMPOB.IDSPMPOB
|
||||
LEFT JOIN PRSN ON EKZMK.IDPRSN=PRSN.IDPRSN
|
||||
LEFT JOIN SPKMMK ON EKZMK.IDSPKMMK=SPKMMK.IDSPKMMK
|
||||
LEFT JOIN SPVDKL ON EKZMK.IDSPVDKL=SPVDKL.IDSPVDKL
|
||||
|
||||
LEFT JOIN #TempSPMU MU ON MU.IDSPMU=EKZMK.IDSPMU
|
||||
|
||||
INNER JOIN #TempFRPD MKF ON EKZMK.IDFRPD=MKF.IDFRPD
|
||||
LEFT JOIN #TempFRPD VL ON EKZ.IDFRPDV=VL.IDFRPD
|
||||
|
||||
LEFT JOIN PRSN VD ON EKZMK.IDPRSNVD=VD.IDPRSN
|
||||
LEFT JOIN SPKT ON EKZ.IDSPKT=SPKT.IDSPKT
|
||||
LEFT JOIN SPSS ON EKZ.IDSPSS=SPSS.IDSPSS
|
||||
LEFT JOIN SPTS ON EKZ.IDSPTS=SPTS.IDSPTS
|
||||
LEFT JOIN EKZRM ON EKZ.IDEKZ=EKZRM.IDEKZ
|
||||
INNER JOIN TPRZ ON EKZ.IDTPRZ=TPRZ.IDTPRZ
|
||||
INNER JOIN TIPS ON TIPS.IDTIPS=TPRZ.IDTIPS
|
||||
INNER JOIN SPNMTP ON TIPS.IDSPNMTP=SPNMTP.IDSPNMTP
|
||||
LEFT JOIN SPKI ON TIPS.IDSPKI=SPKI.IDSPKI
|
||||
INNER JOIN SPOI ON TIPS.IDSPOI=SPOI.IDSPOI
|
||||
|
||||
LEFT JOIN PRSN sd ON EKZMK.IDPRSNsd=sd.IDPRSN
|
||||
LEFT JOIN PRSN pr ON EKZMK.IDPRSNpr=pr.IDPRSN
|
||||
LEFT JOIN PRSN vy ON EKZMK.IDPRSNvy=vy.IDPRSN
|
||||
LEFT JOIN SPSS ssmp ON EKZmk.IDSPSSmp=ssmp.IDSPSS
|
||||
LEFT JOIN SPTS tsmp ON EKZmk.IDSPTSmp=tsmp.IDSPTS
|
||||
|
||||
LEFT JOIN FRPDRK on FRPDRK.IDFRPD = EKZMK.IDFRPD
|
||||
LEFT JOIN FRDSPV on FRDSPV.IDFRPD = EKZMK.IDFRPD
|
||||
LEFT JOIN #TempEkzmkShfkl pk on pk.idekzmk = ekzmk.idekzmk
|
||||
LEFT join #TempEkzmkNNDMS nnd on nnd.idekzmk = ekzmk.idekzmk
|
||||
LEFT JOIN SPVDSBMK ON EKZMK.IDSPVDSBMK=SPVDSBMK.IDSPVDSBMK
|
||||
|
||||
where '
|
||||
|
||||
set @select = @select + @fltr
|
||||
|
||||
if @per = '1'
|
||||
set @fltr = @fltr +
|
||||
' and ekz.idekz in (select idekz from PS_TempFltrEkz where suser = ''' + @systemuser + ''') '
|
||||
|
||||
if @per = '-1'
|
||||
set @fltr = @fltr +
|
||||
' and ekz.idekz not in (select idekz from PS_TempFltrEkz where suser = ''' + @systemuser + ''') '
|
||||
|
||||
set @s = @s + @fltr
|
||||
|
||||
set @s = @s + '
|
||||
IF OBJECT_ID(N''#TempFRPD'', N''U'') IS NOT NULL
|
||||
DROP TABLE #TempFRPD;
|
||||
|
||||
IF OBJECT_ID (N''#TempSPMU'', N''U'') IS NOT NULL
|
||||
DROP TABLE #TempSPMU;'
|
||||
|
||||
if @per = '2'
|
||||
set @s = @select
|
||||
|
||||
exec (@s)
|
||||
END
|
||||
|
||||
Reference in New Issue
Block a user