· 6 years ago · Sep 13, 2019, 02:24 PM
1-- =============================================
2-- WorkItem: #20751
3-- Author: Nikita Wołosewicz
4-- Create date: 2019-05-24
5-- Description: Wypełnia tabele wyników na podstawie XML z wynikami maturalnymi
6-- Modified: #23324; N.Wołosewicz; 2019-06-04; Aktualizacja typów tabeli tymczasowej; poprawienie case'a
7-- Modified: #23456; N.Wołosewicz; 2019-06-17; Usunięcie poszczególnych errorsów; insert do tabeli ImportPlikow; drobne poprawki
8-- Modified: #24417; N.Wołosewicz; 2019-07-17; Dodanie płci, miejsca oraz daty urodzenia
9-- Modified: #24492; N.Wołosewicz; 2019-07-23; Usunięcie nieużywanych pól
10-- Modified: #25658; N.Wołosewicz; 2019-08-29; Dodanie olimpiady oraz informacji czy egzamin jest obowiązkowy; usunięcie wymagalności kodu arkusza
11-- =============================================
12CREATE PROCEDURE [wynik].[proc_OKEImportEgzaminZMaturyAdd]
13 @SourceData [dbo].[EgzaminZMatury] READONLY,
14 @SesjaEgzaminacyjnaNumer NVARCHAR(4),
15 @SystemNazwa NVARCHAR(100),
16 @NazwaPliku NVARCHAR(255),
17 @OkeID INT,
18 @RodzajDeklaracjiID INT,
19 @UzytkownikModyfikacjiID INT
20AS
21BEGIN
22 SET NOCOUNT ON;
23 SET XACT_ABORT ON;
24
25 DECLARE @SesjaEgzaminacyjnaID INT = (SELECT TOP (1) ID FROM egzamin.SesjaEgzaminacyjna WHERE Numer = @SesjaEgzaminacyjnaNumer)
26
27 /* insert do importu plików */
28 INSERT INTO wynik.ImportPlikow
29 (
30 IdOkregowaKomisjaEgzaminacyjna,
31 NazwaPliku,
32 NazwaSystemu,
33 DataDodania,
34 IdUzytkownikModyfikacji
35 )
36 VALUES
37 (
38 @OkeID,
39 @NazwaPliku,
40 @SystemNazwa,
41 SYSUTCDATETIME(),
42 @UzytkownikModyfikacjiID
43 )
44
45 /* errorsy */
46
47 ;WITH CTE_Duplicated AS
48 (
49 SELECT
50 1 AS ID,
51 ZdajacyPesel,
52 ZdajacyDokumentTypID,
53 ZdajacyDokumentNumer
54 FROM
55 @SourceData
56 GROUP BY
57 ZdajacyPesel,
58 ZdajacyDokumentTypID,
59 ZdajacyDokumentNumer
60 HAVING
61 COUNT(DISTINCT PodmiotInternalID) > 1
62 AND (
63 COUNT(ZdajacyPesel) > 1
64 OR COUNT(ZdajacyDokumentNumer) > 1
65 )
66 )
67 SELECT DISTINCT
68 sd.ID,
69 p.ID,
70 sd.PodmiotNazwa,
71 sd.PodmiotRspo,
72 sd.PodmiotTypID,
73 sd.PodmiotKod,
74 sd.PodmiotInternalID,
75 sd.ZdajacyID,
76 sd.ZdajacyImie,
77 sd.ZdajacyImieDrugie,
78 sd.ZdajacyNazwisko,
79 sd.ZdajacyPesel,
80 sd.ZdajacyCzyPosiadaWyniki,
81 sd.ZdajacyDokumentTypID,
82 sd.ZdajacyDokumentNumer,
83 sd.ZdajacyDataUrodzenia,
84 sd.ZdajacyMiejsceUrodzenia,
85 sd.ZdajacyPlec,
86 sd.WynikKodEgzaminu,
87 sd.WynikCzyEgzaminObowiazkowy,
88 sd.WynikJezykZdawaniaID,
89 sd.WynikFormaZdawaniaID,
90 sd.WynikPoziomZdawaniaID,
91 sd.WynikStanWynikuID,
92 sd.WynikStanZdawaniaEgzaminuID,
93 sd.WynikProcent,
94 sd.WynikCentylWartosc,
95 sd.WynikUzyskanePunkty,
96 sd.WynikOlimpiadaID,
97 sd.WynikArkuszaKodArkusza,
98 CASE WHEN s.ID IS NULL THEN N'Brak sesji egzaminacyjnej o podanym numerze'
99 WHEN oke.ID IS NULL THEN N'Brak OKE o podanym ID'
100 WHEN rdek.ID IS NULL THEN N'Brak rodzaju deklaracji o podanym ID'
101 WHEN (s.IdTypZgloszenia <> rdek.IdTypZgloszenia) THEN N'Podana sesja egzaminacyjna nie należy do podanego rodzaju deklaracji'
102 WHEN (tdt.ID IS NULL AND sd.ZdajacyPesel IS NULL) THEN N'Brak typu dokumentu tożsamości o podanym ID'
103 WHEN tp.ID IS NULL THEN N'Brak typu placówki o podanym ID lub typ placowki dla deklaracji nie jest zgodny z typem zgłoszenia'
104 WHEN dp.ID IS NOT NULL THEN N'Podany pesel lub nr dokumentu się duplikuje w innej placówce'
105 WHEN sd.ZdajacyCzyPosiadaWyniki = 1 THEN
106 CASE WHEN te.ID IS NULL THEN N'Brak egzaminu dla danego rodzaju deklaracji o podanym kodzie KREM, poziomie, formie bądź języku zdawania'
107 WHEN sze.ID IS NULL THEN N'Brak stanu zdawania egzaminu o podanym ID'
108 WHEN sw.ID IS NULL THEN N'Brak stanu wyniku o podanym ID lub podany stan wyniku nie obowiązuje dla podanego rodzaju deklaracji'
109 WHEN (sd.WynikArkuszaKodArkusza IS NOT NULL AND ae.ID IS NULL) THEN N'Brak arkusza egzaminacyjnego o podanym kodzie lub arkusz nie jest powiązany z danym egzaminem'
110 WHEN (sd.WynikOlimpiadaID IS NOT NULL AND o.ID IS NULL) THEN N'Brak olimpiady o podanym ID lub olimpiada nie należy do danego typu zgłoszenia'
111 WHEN (sd.WynikOlimpiadaID IS NOT NULL AND oze.ID IS NULL) THEN N'Brak olimpiady zwalniającej z egzaminu dla danej olimpiady i danego typu egzaminu'
112 WHEN (sd.WynikCentylWartosc IS NOT NULL AND ae.ID IS NULL) THEN N'Brak arkusza egzaminacyjnego dla przypisania centyli'
113 END
114 ELSE NULL
115 END AS NazwaBledu
116 INTO #SourceFiltered
117 FROM
118 @SourceData sd
119 LEFT JOIN slownik.OkregowaKomisjaEgzaminacyjna oke ON oke.ID = @OkeID AND oke.CzyWycofany = 0
120 LEFT JOIN egzamin.SesjaEgzaminacyjna s ON s.ID = @SesjaEgzaminacyjnaID AND s.CzyUsuniety = 0
121 LEFT JOIN egzamin.TypZgloszeniaDlaRozporzadzenia rdek ON rdek.ID = @RodzajDeklaracjiID AND rdek.CzyWycofany = 0
122 LEFT JOIN slownik.TypDokumentuTozsamosci tdt ON tdt.ID = sd.ZdajacyDokumentTypID AND tdt.CzyWycofany = 0
123 LEFT JOIN slownik.TypPlacowki tp
124 INNER JOIN slownik.TypZgloszeniaDlaTypuPlacowki tzdtp ON tzdtp.IdTypPlacowki = tp.ID
125 INNER JOIN egzamin.TypZgloszeniaDlaRozporzadzenia tzdr_p ON tzdr_p.IdTypZgloszenia = tzdtp.IdTypZgloszenia
126 ON tp.ID = sd.PodmiotTypID
127 AND tp.CzyWycofany = 0
128 AND tzdtp.CzyWycofany = 0
129 AND tzdr_p.CzyWycofany = 0
130 AND tzdr_p.ID = @RodzajDeklaracjiID
131 LEFT JOIN egzamin.TypEgzaminu te
132 INNER JOIN egzamin.Egzamin e ON e.IdTypEgzaminu = te.ID
133 ON te.KodKrem = sd.WynikKodEgzaminu
134 AND e.IdSesjaEgzaminacyjna = @SesjaEgzaminacyjnaID
135 AND te.IdTypFormyZdawania = sd.WynikFormaZdawaniaID
136 AND te.IdTypJezykaZdawania = sd.WynikJezykZdawaniaID
137 AND te.IdTypPoziomu = sd.WynikPoziomZdawaniaID
138 AND te.CzyWycofany = 0
139 AND te.IdTypZgloszeniaDlaRozporzadzenia = @RodzajDeklaracjiID
140 LEFT JOIN wynik.StanZdawaniaEgzaminu sze ON sze.ID = sd.WynikStanZdawaniaEgzaminuID
141 LEFT JOIN wynik.StanWyniku sw
142 INNER JOIN wynik.StanWynikuDlaTypuZgloszenia swdtz ON swdtz.IdStanWyniku = sw.ID
143 INNER JOIN egzamin.TypZgloszeniaDlaRozporzadzenia tzdr ON tzdr.IdTypZgloszenia = swdtz.IdTypZgloszenia
144 ON sw.ID = sd.WynikStanWynikuID
145 AND sw.CzyWycofany = 0
146 AND swdtz.CzyWycofany = 0
147 AND tzdr.CzyWycofany = 0
148 AND tzdr.ID = @RodzajDeklaracjiID
149 LEFT JOIN egzamin.ArkuszEgzaminacyjny ae ON ae.KodArkusza = sd.WynikArkuszaKodArkusza
150 AND ae.CzyUsuniety = 0
151 AND ae.IdEgzamin = e.ID
152 LEFT JOIN CTE_Duplicated dp ON (dp.ZdajacyPesel = sd.ZdajacyPesel) OR (dp.ZdajacyDokumentTypID = sd.ZdajacyDokumentTypID AND dp.ZdajacyDokumentNumer = sd.ZdajacyDokumentNumer)
153 LEFT JOIN slownik.Olimpiada o ON o.ID = sd.WynikOlimpiadaID
154 AND o.IdTypZgloszenia = s.IdTypZgloszenia
155 AND o.CzyWycofany = 0
156 LEFT JOIN egzamin.OlimpiadaZwalniajacaZEgzaminu oze ON oze.IdOlimpiada = o.ID
157 AND oze.IdTypEgzaminu = te.ID
158 AND oze.CzyUsuniety = 0
159 LEFT JOIN podmiot.Placowka p ON (p.Rspo = sd.PodmiotRspo OR p.Kod = sd.PodmiotKod)
160
161 IF EXISTS (SELECT TOP 1 1 FROM #SourceFiltered WHERE NazwaBledu IS NULL)
162 BEGIN
163 BEGIN TRAN
164 /* insert placówek */
165 DECLARE @TempPodmioty TABLE (ID INT UNIQUE, InternalID INT UNIQUE)
166 MERGE INTO podmiot.Placowka target
167 USING
168 (
169 SELECT
170 sf.PodmiotID,
171 sf.PodmiotInternalID,
172 sf.PodmiotKod,
173 sf.PodmiotNazwa,
174 sf.PodmiotRspo,
175 sf.PodmiotTypID
176 FROM
177 #SourceFiltered sf
178 WHERE
179 sf.NazwaBledu IS NULL
180 GROUP BY
181 sf.PodmiotID,
182 sf.PodmiotInternalID,
183 sf.PodmiotKod,
184 sf.PodmiotNazwa,
185 sf.PodmiotRspo,
186 sf.PodmiotTypID
187 ) source
188 ON (target.ID = source.PodmiotID)
189 WHEN NOT MATCHED THEN
190 INSERT
191 (
192 Kod,
193 Nazwa,
194 Rspo,
195 IdTypPlacowki,
196 IdOkregowaKomisjaEgzaminacyjna,
197 IdUzytkownikModyfikacji,
198 DataZarejestrowaniaWOKE
199 )
200 VALUES
201 (
202 source.PodmiotKod,
203 source.PodmiotNazwa,
204 ISNULL(source.PodmiotRspo, -1), -- ustalenia z PO
205 source.PodmiotTypID,
206 @OkeID,
207 @UzytkownikModyfikacjiID,
208 SYSUTCDATETIME()
209 )
210 OUTPUT
211 INSERTED.ID,
212 source.PodmiotInternalID
213 INTO @TempPodmioty(ID, InternalID);
214
215 UPDATE sf
216 SET
217 sf.PodmiotID = tp.ID
218 FROM
219 #SourceFiltered sf
220 INNER JOIN @TempPodmioty tp ON sf.PodmiotInternalID = tp.InternalID
221 WHERE
222 sf.NazwaBledu IS NULL
223
224 /* insert danych osobowych */
225 DECLARE @TempDaneOsobowe TABLE (ID INT UNIQUE, ImportZdajacyID INT, PlacowkaID INT NULL)
226
227 MERGE INTO deklaracja.DaneOsoboweZdajacego target
228 USING
229 (
230 SELECT
231 sf.ZdajacyID,
232 sf.ZdajacyImie,
233 sf.ZdajacyImieDrugie,
234 sf.ZdajacyNazwisko,
235 sf.ZdajacyDokumentTypID,
236 sf.ZdajacyDokumentNumer,
237 sf.ZdajacyPesel,
238 sf.ZdajacyDataUrodzenia,
239 sf.ZdajacyMiejsceUrodzenia,
240 sf.ZdajacyPlec,
241 sf.PodmiotID
242 FROM
243 #SourceFiltered sf
244 WHERE
245 sf.NazwaBledu IS NULL
246 GROUP BY
247 sf.ZdajacyID,
248 sf.ZdajacyImie,
249 sf.ZdajacyImieDrugie,
250 sf.ZdajacyNazwisko,
251 sf.ZdajacyDokumentTypID,
252 sf.ZdajacyDokumentNumer,
253 sf.ZdajacyPesel,
254 sf.ZdajacyDataUrodzenia,
255 sf.ZdajacyMiejsceUrodzenia,
256 sf.ZdajacyPlec,
257 sf.PodmiotID
258 ) AS source
259 ON (
260 target.Pesel = source.ZdajacyPesel
261 OR (
262 target.NumerDokumentu = source.ZdajacyDokumentNumer
263 AND target.IdTypDokumentuTozsamosci = source.ZdajacyDokumentTypID
264 )
265 )
266 WHEN MATCHED THEN
267 UPDATE SET target.IdUzytkownikModyfikacji = target.IdUzytkownikModyfikacji -- update tylko po to żeby wyciągnąc ID danych osobowych do tabeli tymczasowej
268 WHEN NOT MATCHED THEN
269 INSERT
270 (
271 Imie,
272 DrugieImie,
273 MiejsceUrodzenia,
274 Nazwisko,
275 NazwiskoRodowe,
276 IdTypDokumentuTozsamosci,
277 NumerDokumentu,
278 Pesel,
279 Plec,
280 DataUrodzenia,
281 CzyZweryfikowany,
282 IdUzytkownikModyfikacji
283 )
284 VALUES
285 (
286 source.ZdajacyImie,
287 source.ZdajacyImieDrugie,
288 source.ZdajacyMiejsceUrodzenia,
289 source.ZdajacyNazwisko,
290 NULL,
291 source.ZdajacyDokumentTypID,
292 source.ZdajacyDokumentNumer,
293 source.ZdajacyPesel,
294 source.ZdajacyPlec,
295 source.ZdajacyDataUrodzenia,
296 0,
297 @UzytkownikModyfikacjiID
298 )
299 OUTPUT
300 INSERTED.ID,
301 source.ZdajacyID,
302 source.PodmiotID
303 INTO @TempDaneOsobowe (ID, ImportZdajacyID, PlacowkaID);
304
305 /* insert wyników */
306 -- delete
307 DECLARE @DeleteWynikDeklaracji IdList
308 DECLARE @DeleteWynikEgzaminu IdList
309
310 INSERT INTO @DeleteWynikDeklaracji
311 SELECT ID FROM wynik.WynikDeklaracjiZdajacego
312 WHERE
313 IdDaneOsoboweZdajacego IN (SELECT ID FROM @TempDaneOsobowe)
314 AND IdSesjaEgzaminacyjna = @SesjaEgzaminacyjnaID
315 AND IdTypZgloszeniaDlaRozporzadzenia = @RodzajDeklaracjiID
316
317 UPDATE wynik.WynikEgzaminuZdajacego
318 SET IdUzytkownikModyfikacji = @UzytkownikModyfikacjiID
319 OUTPUT INSERTED.ID INTO @DeleteWynikEgzaminu
320 WHERE IdWynikDeklaracjiZdajacego IN (SELECT ID FROM @DeleteWynikDeklaracji)
321
322 UPDATE wynik.WynikArkuszaEgzaminacyjnego
323 SET IdUzytkownikModyfikacji = @UzytkownikModyfikacjiID
324 WHERE IdWynikEgzaminuZdajacego IN (SELECT ID FROM @DeleteWynikEgzaminu)
325
326 DELETE FROM wynik.WynikArkuszaEgzaminacyjnego
327 WHERE IdWynikEgzaminuZdajacego IN (SELECT ID FROM @DeleteWynikEgzaminu)
328
329 DELETE FROM wynik.WynikEgzaminuZdajacego
330 WHERE ID IN (SELECT ID FROM @DeleteWynikEgzaminu)
331
332 DELETE FROM wynik.WynikDeklaracjiZdajacego
333 WHERE ID IN (SELECT ID FROM @DeleteWynikDeklaracji)
334
335 -- insert
336 DECLARE @TempWynikDeklaracji TABLE (WynikDeklaracjiZdajacegoID INT UNIQUE, ImportZdajacyID INT, PlacowkaID INT NULL);
337
338 MERGE INTO wynik.WynikDeklaracjiZdajacego target
339 USING
340 (
341 SELECT DISTINCT
342 tdo.ID,
343 sf.ZdajacyID,
344 sf.PodmiotID
345 FROM #SourceFiltered sf
346 INNER JOIN @TempDaneOsobowe tdo ON sf.ZdajacyID = tdo.ImportZdajacyID AND tdo.PlacowkaID = sf.PodmiotID
347 WHERE
348 sf.NazwaBledu IS NULL
349 AND sf.ZdajacyCzyPosiadaWyniki = 1
350 ) AS source
351 ON 1 <> 1
352 WHEN NOT MATCHED THEN
353 INSERT
354 (
355 IdDaneOsoboweZdajacego,
356 IdDeklaracja,
357 IdPlacowka,
358 IdSesjaEgzaminacyjna,
359 IdTypZgloszeniaDlaRozporzadzenia,
360 IdUzytkownikModyfikacji
361 )
362 VALUES
363 (
364 source.ID,
365 NULL,
366 source.PodmiotID,
367 @SesjaEgzaminacyjnaID,
368 @RodzajDeklaracjiID,
369 @UzytkownikModyfikacjiID
370 )
371 OUTPUT
372 INSERTED.ID,
373 source.ZdajacyID,
374 source.PodmiotID
375 INTO @TempWynikDeklaracji (WynikDeklaracjiZdajacegoID, ImportZdajacyID, PlacowkaID);
376
377 DECLARE @TempWynikEgzaminu TABLE (WynikDeklaracjiID INT, WynikEgzaminuID INT, EgzaminID INT)
378 MERGE INTO wynik.WynikEgzaminuZdajacego target
379 USING
380 (
381 SELECT DISTINCT
382 twd.WynikDeklaracjiZdajacegoID,
383 e.ID AS EgzaminID,
384 swdtz.ID AS WynikStanWynikuID,
385 oze.ID AS OlimpiadaZwalniajacaZEgzaminuID,
386 sf.WynikCzyEgzaminObowiazkowy,
387 sf.WynikStanZdawaniaEgzaminuID,
388 sf.WynikUzyskanePunkty,
389 sf.WynikProcent
390 FROM
391 #SourceFiltered sf
392 INNER JOIN wynik.StanWynikuDlaTypuZgloszenia swdtz ON swdtz.IdStanWyniku = sf.WynikStanWynikuID
393 INNER JOIN @TempWynikDeklaracji twd ON twd.ImportZdajacyID = sf.ZdajacyID AND twd.PlacowkaID = sf.PodmiotID
394 INNER JOIN egzamin.TypEgzaminu te ON te.KodKrem = sf.WynikKodEgzaminu
395 AND te.IdTypFormyZdawania = sf.WynikFormaZdawaniaID
396 AND te.IdTypPoziomu = sf.WynikPoziomZdawaniaID
397 AND te.IdTypJezykaZdawania = sf.WynikJezykZdawaniaID
398 AND te.IdTypZgloszeniaDlaRozporzadzenia = @RodzajDeklaracjiID
399 INNER JOIN egzamin.Egzamin e ON e.IdTypEgzaminu = te.ID
400 LEFT JOIN egzamin.OlimpiadaZwalniajacaZEgzaminu oze ON oze.IdOlimpiada = sf.WynikOlimpiadaID
401 AND oze.IdTypEgzaminu = te.ID
402 AND oze.CzyUsuniety = 0
403 LEFT JOIN egzamin.ArkuszEgzaminacyjny ae ON ae.IdEgzamin = e.ID
404 AND ae.KodArkusza = sf.WynikArkuszaKodArkusza
405 AND ae.CzyUsuniety = 0
406 WHERE
407 e.IdSesjaEgzaminacyjna = @SesjaEgzaminacyjnaID
408 AND te.CzyWycofany = 0
409 AND sf.NazwaBledu IS NULL
410 AND sf.ZdajacyCzyPosiadaWyniki = 1
411 ) query
412 ON 1 <> 1
413 WHEN NOT MATCHED THEN
414 INSERT
415 (
416 IdWynikDeklaracjiZdajacego,
417 IdEgzamin,
418 IdStanWynikuDlaTypuZgloszenia,
419 IdStanZdawaniaEgzaminu,
420 IdDeklaracjaEgzaminu,
421 Wynik,
422 WynikProcentowy,
423 IdOlimpiadaZwalniajacaZEgzaminu,
424 CzyEgzaminObowiazkowy,
425 IdUzytkownikModyfikacji
426 )
427 VALUES
428 (
429 query.WynikDeklaracjiZdajacegoID,
430 query.EgzaminID,
431 query.WynikStanWynikuID,
432 query.WynikStanZdawaniaEgzaminuID,
433 NULL,
434 query.WynikUzyskanePunkty,
435 query.WynikProcent,
436 query.OlimpiadaZwalniajacaZEgzaminuID,
437 query.WynikCzyEgzaminObowiazkowy,
438 @UzytkownikModyfikacjiID
439 )
440 OUTPUT
441 query.WynikDeklaracjiZdajacegoID,
442 INSERTED.ID,
443 query.EgzaminID
444 INTO @TempWynikEgzaminu(WynikDeklaracjiID, WynikEgzaminuID, EgzaminID);
445
446 -- wyciągnięcie arkusza
447 DECLARE @TempArkusz TABLE (WynikEgzaminuID INT, ArkuszID INT)
448 INSERT INTO @TempArkusz(WynikEgzaminuID, ArkuszID)
449 SELECT DISTINCT
450 twe.WynikEgzaminuID,
451 ae.ID
452 FROM
453 @TempWynikEgzaminu twe
454 INNER JOIN @TempWynikDeklaracji twd ON twd.WynikDeklaracjiZdajacegoID = twe.WynikDeklaracjiID
455 INNER JOIN #SourceFiltered sf ON sf.ZdajacyID = twd.ImportZdajacyID AND twd.PlacowkaID = sf.PodmiotID
456 INNER JOIN egzamin.TypEgzaminu te ON te.KodKrem = sf.WynikKodEgzaminu
457 AND te.IdTypFormyZdawania = sf.WynikFormaZdawaniaID
458 AND te.IdTypPoziomu = sf.WynikPoziomZdawaniaID
459 AND te.IdTypJezykaZdawania = sf.WynikJezykZdawaniaID
460 AND te.IdTypZgloszeniaDlaRozporzadzenia = @RodzajDeklaracjiID
461 INNER JOIN egzamin.Egzamin e ON e.IdTypEgzaminu = te.ID
462 INNER JOIN egzamin.ArkuszEgzaminacyjny ae ON ae.IdEgzamin = twe.EgzaminID
463 AND ae.IdEgzamin = e.ID
464 AND ae.KodArkusza = sf.WynikArkuszaKodArkusza
465 WHERE
466 e.IdSesjaEgzaminacyjna = @SesjaEgzaminacyjnaID
467 AND te.CzyWycofany = 0
468 AND ae.CzyUsuniety = 0
469 AND sf.NazwaBledu IS NULL
470 AND sf.ZdajacyCzyPosiadaWyniki = 1
471
472 -- insert wyników dla arkuszy
473 INSERT INTO wynik.WynikArkuszaEgzaminacyjnego
474 (
475 IdArkuszEgzaminacyjny,
476 IdWynikEgzaminuZdajacego,
477 Punkty,
478 IdKartaZdajacego,
479 IdUzytkownikModyfikacji
480 )
481 SELECT DISTINCT
482 ta.ArkuszID,
483 twe.WynikEgzaminuID,
484 0,
485 NULL,
486 @UzytkownikModyfikacjiID
487 FROM
488 @TempWynikEgzaminu twe
489 INNER JOIN @TempWynikDeklaracji twd ON twd.WynikDeklaracjiZdajacegoID = twe.WynikDeklaracjiID
490 INNER JOIN @TempArkusz ta ON ta.WynikEgzaminuID = twe.WynikEgzaminuID
491 INNER JOIN #SourceFiltered sf ON sf.ZdajacyID = twd.ImportZdajacyID AND twd.PlacowkaID = sf.PodmiotID
492 INNER JOIN egzamin.ArkuszEgzaminacyjny ae ON ta.ArkuszID = ae.ID
493 AND ae.KodArkusza = sf.WynikArkuszaKodArkusza
494 AND ae.CzyUsuniety = 0
495 WHERE
496 sf.NazwaBledu IS NULL
497 AND sf.ZdajacyCzyPosiadaWyniki = 1
498
499 -- centyle
500 INSERT INTO egzamin.Centyl
501 (
502 IdArkuszEgzaminacyjny,
503 Wartosc,
504 IdUzytkownikModyfikacji,
505 WynikProcentowy
506 )
507 SELECT DISTINCT
508 ta.ArkuszID,
509 sf.WynikCentylWartosc,
510 @UzytkownikModyfikacjiID,
511 sf.WynikProcent
512 FROM
513 @TempWynikEgzaminu twe
514 INNER JOIN @TempWynikDeklaracji twd ON twd.WynikDeklaracjiZdajacegoID = twe.WynikDeklaracjiID
515 INNER JOIN @TempArkusz ta ON ta.WynikEgzaminuID = twe.WynikEgzaminuID
516 INNER JOIN #SourceFiltered sf ON sf.ZdajacyID = twd.ImportZdajacyID AND twd.PlacowkaID = sf.PodmiotID
517 INNER JOIN egzamin.ArkuszEgzaminacyjny ae ON ta.ArkuszID = ae.ID
518 AND ae.KodArkusza = sf.WynikArkuszaKodArkusza
519 AND ae.CzyUsuniety = 0
520 WHERE
521 sf.NazwaBledu IS NULL
522 AND sf.ZdajacyCzyPosiadaWyniki = 1
523
524 COMMIT TRAN;
525 END
526
527 SELECT
528 @SesjaEgzaminacyjnaNumer AS SesjaEgzaminacyjnaNumer,
529 @OkeID AS OkeID,
530 @RodzajDeklaracjiID AS RodzajDeklaracjiID,
531 PodmiotNazwa,
532 PodmiotRspo,
533 PodmiotTypID,
534 PodmiotKod,
535 PodmiotInternalID,
536 ZdajacyID,
537 ZdajacyImie,
538 ZdajacyImieDrugie,
539 ZdajacyNazwisko,
540 ZdajacyPesel,
541 ZdajacyCzyPosiadaWyniki,
542 ZdajacyDokumentTypID,
543 ZdajacyDokumentNumer,
544 ZdajacyDataUrodzenia,
545 ZdajacyMiejsceUrodzenia,
546 ZdajacyPlec,
547 WynikKodEgzaminu,
548 WynikCzyEgzaminObowiazkowy,
549 WynikJezykZdawaniaID,
550 WynikFormaZdawaniaID,
551 WynikPoziomZdawaniaID,
552 WynikStanWynikuID,
553 WynikStanZdawaniaEgzaminuID,
554 WynikProcent,
555 WynikCentylWartosc,
556 WynikUzyskanePunkty,
557 WynikOlimpiadaID,
558 WynikArkuszaKodArkusza,
559 NazwaBledu
560 FROM
561 #SourceFiltered
562 WHERE
563 NazwaBledu IS NOT NULL
564
565 IF(OBJECT_ID('tempdb..#SourceFiltered') IS NOT NULL)
566 DROP TABLE #SourceFiltered
567END