Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.15 KB | None | 0 0
  1. Declare
  2. @ZdajacyKod NVARCHAR(5) = NULL,
  3. @ZdajacyNazwiska NVARCHAR(201) = NULL,
  4. @ZdajacyImiona NVARCHAR(101) = NULL,
  5. @NumerDokumentuLubPesel NumerDokumentu = NULL,
  6. @TypyArkusza IdList ,
  7. @Uprawnienia IdList ,
  8. @DostosowaniaZWplywem IdList ,
  9. @DostosowaniaBezWplywu IdList ,
  10. @TypEgzaminuID INT = NULL,
  11. @TypZgloszeniaDlaRozporzadzeniaID INT = NULL,
  12. @PlacowkaNazwa NVARCHAR(50) = NULL,
  13. @PlacowkaKod NVARCHAR(12) = NULL,
  14. @OstatniaAktualizacjaOd DATETIME2,
  15. @OstatniaAktualizacjaDo DATETIME2,
  16. @CzyWykreslona BIT,
  17.  
  18. @SesjaEgzaminacyjnaID INT = 5225,
  19. @OkeID INT = 3,
  20.  
  21. @OrderBy NVARCHAR(50) = NULL,
  22. @IsDescending BIT = 0,
  23. @PageOffset INT = 0,
  24. @PageSize INT = 20
  25.  
  26. SET @ZdajacyNazwiska = REPLACE(@ZdajacyNazwiska, '-', ' ')
  27.  
  28. DECLARE @IdDeklaracjiEgzaminuDlaUprawnien IdList
  29.  
  30. DECLARE @IloscDostosowan INT
  31.  
  32. DECLARE @LiczbaBezWplywu INT
  33.  
  34. SELECT @LiczbaBezWplywu = COUNT(*) FROM @DostosowaniaBezWplywu
  35.  
  36. DECLARE @LiczbaZWplywem INT
  37.  
  38. SELECT @LiczbaZWplywem = COUNT(*) FROM @DostosowaniaZWplywem
  39.  
  40. SELECT @IloscDostosowan = @LiczbaBezWplywu + @LiczbaZWplywem
  41.  
  42. DECLARE @IloscUprawnien INT
  43.  
  44. SELECT @IloscUprawnien = COUNT(*) FROM @Uprawnienia
  45.  
  46. IF(@IloscUprawnien > 0)
  47. INSERT @IdDeklaracjiEgzaminuDlaUprawnien
  48. SELECT IdDeklaracja
  49. FROM deklaracja.DeklaracjaUprawnienie
  50. WHERE (IdUprawnienie IN (SELECT ID FROM @Uprawnienia))
  51. GROUP BY IdDeklaracja
  52. HAVING COUNT(IdUprawnienie) >= @IloscUprawnien
  53.  
  54. ;WITH CTE AS
  55. (
  56. SELECT
  57. de.ID AS DeklaracjaID,
  58. dek.ID AS DeklaracjaEgzaminuID,
  59. de.IdPlacowka AS PlacowkaID,
  60. p.Kod AS PlacowkaKod,
  61. p.Nazwa AS PlacowkaNazwa,
  62. o.ID AS OddzialID,
  63. o.Kod AS OddzialOznaczenie,
  64. doz.ID AS DaneOsoboweID,
  65. z.ID AS ZdajacyID,
  66. doz.Imie AS ZdajacyImie,
  67. doz.DrugieImie AS ZdajacyDrugieImie,
  68. doz.Nazwisko AS ZdajacyNazwisko,
  69. doz.NazwiskoRodowe AS ZdajacyNazwiskoRodowe,
  70. z.Numer AS ZdajacyNumer,
  71. doz.Pesel AS ZdajacyPesel,
  72. doz.NumerDokumentu AS ZdajacyNumerDokumentu,
  73. ta_d.ID AS TypArkuszaID,
  74. ta_d.Kod AS TypArkuszaKod,
  75. ta_d.Nazwa AS TypArkuszaNazwa,
  76. sd.ID AS StanDeklaracjiID,
  77. sd.Nazwa AS StanDeklaracjiNazwa,
  78. tzdr.ID AS TypZgloszeniaDlaRozporzadzeniaID,
  79. tzdr.Nazwa AS TypZgloszeniaDlaRozporzadzeniaNazwa,
  80. te.ID AS TypEgzaminuID,
  81. te.Nazwa AS TypEgzaminuNazwa,
  82. f.OstatniaAktualizacja,
  83. f.UzytkownikID,
  84. u.Imie AS UzytkownikImie,
  85. u.Nazwisko AS UzytkownikNazwisko,
  86.  
  87. DENSE_RANK() OVER (ORDER BY doz.ID) + DENSE_RANK() OVER (ORDER BY doz.ID DESC) - 1 AS LiczbaZdajacych
  88. FROM
  89. podmiot.Placowka AS p
  90. INNER JOIN deklaracja.DaneOsoboweZdajacego AS doz
  91. INNER JOIN podmiot.Zdajacy AS z ON doz.ID = z.IdDaneOsoboweZdajacego
  92. INNER JOIN podmiot.Oddzial AS o ON o.ID = z.IdOddzial ON p.ID = o.IdPlacowka
  93. LEFT JOIN slownik.StanDeklaracjiEgzaminu AS sde
  94. INNER JOIN deklaracja.DeklaracjaEgzaminu AS dek
  95. INNER JOIN egzamin.Egzamin AS e ON e.ID = dek.IdEgzamin
  96. INNER JOIN egzamin.TypEgzaminu AS te ON te.ID = e.IdTypEgzaminu
  97. INNER JOIN egzamin.TypPoziomu AS tp ON te.IdTypPoziomu = tp.ID
  98. INNER JOIN egzamin.TypFormyZdawania AS tfz ON te.IdTypFormyZdawania = tfz.ID
  99. INNER JOIN deklaracja.Deklaracja AS de ON de.ID = dek.IdDeklaracja ON sde.ID = dek.IdStanDeklaracjiEgzaminu
  100. INNER JOIN egzamin.TypArkusza AS ta_d ON ta_d.ID = dek.IdTypArkusza
  101. INNER JOIN egzamin.TypZgloszeniaDlaRozporzadzenia AS tzdr ON de.IdTypZgloszeniaDlaRozporzadzenia = tzdr.ID
  102. INNER JOIN slownik.TypZdajacego AS tz ON tz.ID = de.IdTypZdajacego
  103. INNER JOIN slownik.StanDeklaracji AS sd ON sd.ID = de.IdStanDeklaracji ON z.ID = de.IdZdajacy
  104. LEFT JOIN podmiot.SalaEgzaminacyjna AS se ON dek.IdSalaEgzaminacyjna = se.ID
  105. INNER JOIN
  106. (
  107. SELECT ID, IdUzytkownikModyfikacji AS UzytkownikID, MAX(OstatniaAktualizacja) AS OstatniaAktualizacja
  108. FROM
  109. (
  110. SELECT de.IdDeklaracja AS ID, ded.IdUzytkownikModyfikacji, ded.StartTime AS OstatniaAktualizacja
  111. FROM [deklaracja].[DeklaracjaEgzaminuDostosowanie] AS ded
  112. INNER JOIN deklaracja.DeklaracjaEgzaminu AS de ON de.ID = ded.IdDeklaracjaEgzaminu
  113. UNION
  114. SELECT de.IdDeklaracja AS ID, ded.IdUzytkownikModyfikacji, ded.EndTime AS OstatniaAktualizacja
  115. FROM [deklaracja].[DeklaracjaEgzaminuDostosowanie] AS ded
  116. INNER JOIN deklaracja.DeklaracjaEgzaminu AS de ON de.ID = ded.IdDeklaracjaEgzaminu AND ded.EndTime < CONVERT(DATETIME2, '9999')
  117. )f
  118. GROUP BY ID, IdUzytkownikModyfikacji
  119. )f ON f.ID = de.ID
  120. INNER JOIN uzytkownik.DaneUzytkownika AS u ON u.IdUzytkownik = f.UzytkownikID
  121. INNER JOIN deklaracja.DeklaracjaEgzaminuDostosowanie AS ded ON dek.ID = ded.IdDeklaracjaEgzaminu
  122. INNER JOIN egzamin.Dostosowanie AS d ON ded.IdDostosowanie = d.ID
  123. INNER JOIN deklaracja.DeklaracjaUprawnienie AS du ON du.IdDeklaracja = de.ID
  124. INNER JOIN egzamin.UprawnienieDoDostosowan AS ud ON ud.ID = du.IdUprawnienie
  125. OUTER APPLY
  126. (
  127. SELECT ded.IdDeklaracjaEgzaminu
  128. FROM deklaracja.DeklaracjaEgzaminuDostosowanie AS ded
  129. INNER JOIN @DostosowaniaBezWplywu AS d ON d.ID = ded.IdDostosowanie
  130. INNER JOIN @DostosowaniaZWplywem AS de ON de.ID = ded.IdDostosowanie
  131. WHERE ded.IdDeklaracjaEgzaminu = de.ID
  132. GROUP BY ded.IdDeklaracjaEgzaminu
  133. HAVING COUNT(*) >= @IloscDostosowan
  134. ) AS ACross
  135. WHERE
  136. (@ZdajacyKod IS NULL OR CONCAT(o.Kod, FORMAT(z.Numer, '0#')) LIKE @ZdajacyKod +'%')
  137. AND (@ZdajacyNazwiska IS NULL OR CONCAT(doz.Nazwisko, ' ', COALESCE(doz.NazwiskoRodowe, '')) LIKE '%'+ @ZdajacyNazwiska +'%')
  138. AND (@ZdajacyImiona IS NULL OR REPLACE(CONCAT(doz.Imie, ' ', COALESCE(doz.DrugieImie, '')), '-', ' ') LIKE '%'+ @ZdajacyImiona +'%')
  139. AND (@NumerDokumentuLubPesel IS NULL OR COALESCE(doz.Pesel, doz.NumerDokumentu) LIKE '%'+@NumerDokumentuLubPesel +'%')
  140. AND (@PlacowkaKod IS NULL OR p.Kod LIKE @PlacowkaKod +'%')
  141. AND (@PlacowkaNazwa IS NULL OR p.Nazwa LIKE '%' + @PlacowkaNazwa +'%')
  142. AND (NOT EXISTS (SELECT TOP 1 1 FROM @TypyArkusza) OR ta_d.ID IN (SELECT ID FROM @TypyArkusza))
  143. AND (@TypZgloszeniaDlaRozporzadzeniaID IS NULL OR tzdr.ID = @TypZgloszeniaDlaRozporzadzeniaID)
  144. AND (NOT EXISTS (SELECT TOP 1 1 FROM @IdDeklaracjiEgzaminuDlaUprawnien) OR de.ID IN (SELECT ID FROM @IdDeklaracjiEgzaminuDlaUprawnien))
  145. AND de.IdSesjaEgzaminacyjna = @SesjaEgzaminacyjnaID
  146. AND (@TypEgzaminuID IS NULL OR te.ID = @TypEgzaminuID)
  147. AND p.IdOkregowaKomisjaEgzaminacyjna = @OkeID
  148. AND (@OstatniaAktualizacjaOd IS NULL OR @OstatniaAktualizacjaDo IS NULL OR (f.OstatniaAktualizacja BETWEEN @OstatniaAktualizacjaOd AND @OstatniaAktualizacjaDo))
  149. AND sd.ID <> 2 --2: Wykreslona deklaracja
  150. ORDER BY
  151. CASE WHEN @OrderBy = 'PlacowkaKod' AND @IsDescending = 0 THEN p.Kod END ASC,
  152. CASE WHEN @OrderBy = 'PlacowkaKod' AND @IsDescending = 1 THEN p.Kod END DESC,
  153.  
  154. CASE WHEN @OrderBy = 'PlacowkaNazwa' AND @IsDescending = 0 THEN p.Nazwa END ASC,
  155. CASE WHEN @OrderBy = 'PlacowkaNazwa' AND @IsDescending = 1 THEN p.Nazwa END DESC,
  156.  
  157. CASE WHEN @OrderBy = 'KodUcznia' AND @IsDescending = 0 THEN CONCAT(o.Kod, FORMAT(z.Numer, '0#')) END ASC,
  158. CASE WHEN @OrderBy = 'KodUcznia' AND @IsDescending = 1 THEN CONCAT(o.Kod, FORMAT(z.Numer, '0#')) END DESC,
  159.  
  160. CASE WHEN @OrderBy = 'Imie' AND @IsDescending = 0 THEN CONCAT(doz.Imie, ' ', COALESCE(doz.DrugieImie, '')) END ASC,
  161. CASE WHEN @OrderBy = 'Imie' AND @IsDescending = 1 THEN CONCAT(doz.Imie, ' ', COALESCE(doz.DrugieImie, '')) END DESC,
  162.  
  163. CASE WHEN @OrderBy = 'Nazwisko' AND @IsDescending = 0 THEN CONCAT(doz.Nazwisko, ' ', COALESCE(doz.NazwiskoRodowe, '')) END ASC,
  164. CASE WHEN @OrderBy = 'Nazwisko' AND @IsDescending = 1 THEN CONCAT(doz.Nazwisko, ' ', COALESCE(doz.NazwiskoRodowe, '')) END DESC,
  165.  
  166. CASE WHEN @OrderBy = 'NumerDokumentuLubPesel' AND @IsDescending = 0 THEN COALESCE(doz.Pesel, doz.NumerDokumentu) END ASC,
  167. CASE WHEN @OrderBy = 'NumerDokumentuLubPesel' AND @IsDescending = 1 THEN COALESCE(doz.Pesel, doz.NumerDokumentu) END DESC,
  168.  
  169. CASE WHEN @OrderBy = 'TypArkusza' AND @IsDescending = 0 THEN ta_d.Nazwa END ASC,
  170. CASE WHEN @OrderBy = 'TypArkusza' AND @IsDescending = 1 THEN ta_d.Nazwa END DESC,
  171.  
  172. CASE WHEN @OrderBy = 'Uprawnienie' AND @IsDescending = 0 THEN ud.Nazwa END ASC,
  173. CASE WHEN @OrderBy = 'Uprawnienie' AND @IsDescending = 1 THEN ud.Nazwa END DESC,
  174.  
  175. CASE WHEN @OrderBy = 'Dostosowania' AND @IsDescending = 0 THEN d.Nazwa END ASC,
  176. CASE WHEN @OrderBy = 'Dostosowania' AND @IsDescending = 1 THEN d.Nazwa END DESC,
  177.  
  178. CASE WHEN @OrderBy = 'TypEgzaminuID' AND @IsDescending = 0 THEN te.ID END ASC,
  179. CASE WHEN @OrderBy = 'TypEgzaminuID' AND @IsDescending = 1 THEN te.ID END DESC,
  180.  
  181. CASE WHEN @OrderBy = 'OstatniaAktualizacja' AND @IsDescending = 0 THEN f.OstatniaAktualizacja END ASC,
  182. CASE WHEN @OrderBy = 'OstatniaAktualizacja' AND @IsDescending = 1 THEN f.OstatniaAktualizacja END DESC,
  183.  
  184. de.ID, dek.ID
  185. OFFSET @PageOffset ROWS
  186. FETCH NEXT @PageSize ROWS ONLY
  187. )
  188. SELECT
  189. DeklaracjaID,
  190. CTE.DeklaracjaEgzaminuID
  191. DeklaracjaEgzaminuID,
  192. PlacowkaID,
  193. PlacowkaKod,
  194. PlacowkaNazwa,
  195. OddzialID,
  196. OddzialOznaczenie,
  197. DaneOsoboweID,
  198. ZdajacyID,
  199. ZdajacyImie,
  200. ZdajacyDrugieImie,
  201. ZdajacyNazwisko,
  202. ZdajacyNazwiskoRodowe,
  203. ZdajacyNumer,
  204. ZdajacyPesel,
  205. ZdajacyNumerDokumentu,
  206. TypArkuszaID,
  207. TypArkuszaKod,
  208. TypArkuszaNazwa,
  209. StanDeklaracjiID,
  210. StanDeklaracjiNazwa,
  211. TypZgloszeniaDlaRozporzadzeniaID,
  212. TypZgloszeniaDlaRozporzadzeniaNazwa,
  213. TypEgzaminuID,
  214. TypEgzaminuNazwa,
  215. d.ID AS DostosowanieID,
  216. d.Nazwa AS DostosowanieNazwa,
  217. ud.ID AS UprawnienieDoDostosowanID,
  218. ud.Nazwa AS UprawnienieDoDostosowanNazwa,
  219. d.CzyWplywaNaZamowienie AS DostosowanieCzyWplywaNaZamowienie,
  220. d.KolorTla AS DostosowanieKolorTla,
  221. d.IdIkonaDostosowania AS IkonaDostosowaniaID,
  222. OstatniaAktualizacja,
  223. UzytkownikID,
  224. UzytkownikImie,
  225. UzytkownikNazwisko,
  226. LiczbaZdajacych
  227. FROM CTE
  228. INNER JOIN deklaracja.DeklaracjaEgzaminuDostosowanie ded on ded.IdDeklaracjaEgzaminu = CTE.DeklaracjaEgzaminuID
  229. INNER JOIN deklaracja.DeklaracjaUprawnienie du ON du.IdDeklaracja = CTE.DeklaracjaID
  230. INNER JOIN egzamin.Dostosowanie AS d ON ded.IdDostosowanie = d.ID
  231. INNER JOIN egzamin.UprawnienieDoDostosowan AS ud ON ud.ID = du.IdUprawnienie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement