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