Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Declare
- @ZdajacyKod NVARCHAR(5) = NULL,
- @ZdajacyNazwiska NVARCHAR(201) = NULL,
- @ZdajacyImiona NVARCHAR(101) = NULL,
- @NumerDokumentuLubPesel NumerDokumentu = NULL,
- @TypyArkusza IdList ,
- @Uprawnienia IdList ,
- @DostosowaniaZWplywem IdList ,
- @DostosowaniaBezWplywu IdList ,
- @TypEgzaminuID INT = NULL,
- @TypZgloszeniaDlaRozporzadzeniaID INT = NULL,
- @PlacowkaNazwa NVARCHAR(50) = NULL,
- @PlacowkaKod NVARCHAR(12) = NULL,
- @OstatniaAktualizacjaOd DATETIME2,
- @OstatniaAktualizacjaDo DATETIME2,
- @CzyWykreslona BIT,
- @SesjaEgzaminacyjnaID INT = 5225,
- @OkeID INT = 3,
- @OrderBy NVARCHAR(50) = NULL,
- @IsDescending BIT = 0,
- @PageOffset INT = 0,
- @PageSize INT = 20
- SET @ZdajacyNazwiska = REPLACE(@ZdajacyNazwiska, '-', ' ')
- DECLARE @IdDeklaracjiEgzaminuDlaUprawnien IdList
- DECLARE @IloscDostosowan INT
- DECLARE @LiczbaBezWplywu INT
- SELECT @LiczbaBezWplywu = COUNT(*) FROM @DostosowaniaBezWplywu
- DECLARE @LiczbaZWplywem INT
- SELECT @LiczbaZWplywem = COUNT(*) FROM @DostosowaniaZWplywem
- SELECT @IloscDostosowan = @LiczbaBezWplywu + @LiczbaZWplywem
- DECLARE @IloscUprawnien INT
- SELECT @IloscUprawnien = COUNT(*) FROM @Uprawnienia
- IF(@IloscUprawnien > 0)
- INSERT @IdDeklaracjiEgzaminuDlaUprawnien
- SELECT IdDeklaracja
- FROM deklaracja.DeklaracjaUprawnienie
- WHERE (IdUprawnienie IN (SELECT ID FROM @Uprawnienia))
- GROUP BY IdDeklaracja
- HAVING COUNT(IdUprawnienie) >= @IloscUprawnien
- ;WITH CTE AS
- (
- SELECT
- de.ID AS DeklaracjaID,
- dek.ID AS DeklaracjaEgzaminuID,
- de.IdPlacowka AS PlacowkaID,
- p.Kod AS PlacowkaKod,
- p.Nazwa AS PlacowkaNazwa,
- o.ID AS OddzialID,
- o.Kod AS OddzialOznaczenie,
- doz.ID AS DaneOsoboweID,
- z.ID AS ZdajacyID,
- doz.Imie AS ZdajacyImie,
- doz.DrugieImie AS ZdajacyDrugieImie,
- doz.Nazwisko AS ZdajacyNazwisko,
- doz.NazwiskoRodowe AS ZdajacyNazwiskoRodowe,
- z.Numer AS ZdajacyNumer,
- doz.Pesel AS ZdajacyPesel,
- doz.NumerDokumentu AS ZdajacyNumerDokumentu,
- ta_d.ID AS TypArkuszaID,
- ta_d.Kod AS TypArkuszaKod,
- ta_d.Nazwa AS TypArkuszaNazwa,
- sd.ID AS StanDeklaracjiID,
- sd.Nazwa AS StanDeklaracjiNazwa,
- tzdr.ID AS TypZgloszeniaDlaRozporzadzeniaID,
- tzdr.Nazwa AS TypZgloszeniaDlaRozporzadzeniaNazwa,
- te.ID AS TypEgzaminuID,
- te.Nazwa AS TypEgzaminuNazwa,
- f.OstatniaAktualizacja,
- f.UzytkownikID,
- u.Imie AS UzytkownikImie,
- u.Nazwisko AS UzytkownikNazwisko,
- DENSE_RANK() OVER (ORDER BY doz.ID) + DENSE_RANK() OVER (ORDER BY doz.ID DESC) - 1 AS LiczbaZdajacych
- FROM
- podmiot.Placowka AS p
- INNER JOIN deklaracja.DaneOsoboweZdajacego AS doz
- INNER JOIN podmiot.Zdajacy AS z ON doz.ID = z.IdDaneOsoboweZdajacego
- INNER JOIN podmiot.Oddzial AS o ON o.ID = z.IdOddzial ON p.ID = o.IdPlacowka
- LEFT JOIN slownik.StanDeklaracjiEgzaminu AS sde
- INNER JOIN deklaracja.DeklaracjaEgzaminu AS dek
- INNER JOIN egzamin.Egzamin AS e ON e.ID = dek.IdEgzamin
- INNER JOIN egzamin.TypEgzaminu AS te ON te.ID = e.IdTypEgzaminu
- INNER JOIN egzamin.TypPoziomu AS tp ON te.IdTypPoziomu = tp.ID
- INNER JOIN egzamin.TypFormyZdawania AS tfz ON te.IdTypFormyZdawania = tfz.ID
- INNER JOIN deklaracja.Deklaracja AS de ON de.ID = dek.IdDeklaracja ON sde.ID = dek.IdStanDeklaracjiEgzaminu
- INNER JOIN egzamin.TypArkusza AS ta_d ON ta_d.ID = dek.IdTypArkusza
- INNER JOIN egzamin.TypZgloszeniaDlaRozporzadzenia AS tzdr ON de.IdTypZgloszeniaDlaRozporzadzenia = tzdr.ID
- INNER JOIN slownik.TypZdajacego AS tz ON tz.ID = de.IdTypZdajacego
- INNER JOIN slownik.StanDeklaracji AS sd ON sd.ID = de.IdStanDeklaracji ON z.ID = de.IdZdajacy
- LEFT JOIN podmiot.SalaEgzaminacyjna AS se ON dek.IdSalaEgzaminacyjna = se.ID
- INNER JOIN
- (
- SELECT ID, IdUzytkownikModyfikacji AS UzytkownikID, MAX(OstatniaAktualizacja) AS OstatniaAktualizacja
- FROM
- (
- SELECT de.IdDeklaracja AS ID, ded.IdUzytkownikModyfikacji, ded.StartTime AS OstatniaAktualizacja
- FROM [deklaracja].[DeklaracjaEgzaminuDostosowanie] AS ded
- INNER JOIN deklaracja.DeklaracjaEgzaminu AS de ON de.ID = ded.IdDeklaracjaEgzaminu
- UNION
- SELECT de.IdDeklaracja AS ID, ded.IdUzytkownikModyfikacji, ded.EndTime AS OstatniaAktualizacja
- FROM [deklaracja].[DeklaracjaEgzaminuDostosowanie] AS ded
- INNER JOIN deklaracja.DeklaracjaEgzaminu AS de ON de.ID = ded.IdDeklaracjaEgzaminu AND ded.EndTime < CONVERT(DATETIME2, '9999')
- )f
- GROUP BY ID, IdUzytkownikModyfikacji
- )f ON f.ID = de.ID
- INNER JOIN uzytkownik.DaneUzytkownika AS u ON u.IdUzytkownik = f.UzytkownikID
- INNER JOIN deklaracja.DeklaracjaEgzaminuDostosowanie AS ded ON dek.ID = ded.IdDeklaracjaEgzaminu
- INNER JOIN egzamin.Dostosowanie AS d ON ded.IdDostosowanie = d.ID
- INNER JOIN deklaracja.DeklaracjaUprawnienie AS du ON du.IdDeklaracja = de.ID
- INNER JOIN egzamin.UprawnienieDoDostosowan AS ud ON ud.ID = du.IdUprawnienie
- OUTER APPLY
- (
- SELECT ded.IdDeklaracjaEgzaminu
- FROM deklaracja.DeklaracjaEgzaminuDostosowanie AS ded
- INNER JOIN @DostosowaniaBezWplywu AS d ON d.ID = ded.IdDostosowanie
- INNER JOIN @DostosowaniaZWplywem AS de ON de.ID = ded.IdDostosowanie
- WHERE ded.IdDeklaracjaEgzaminu = de.ID
- GROUP BY ded.IdDeklaracjaEgzaminu
- HAVING COUNT(*) >= @IloscDostosowan
- ) AS ACross
- WHERE
- (@ZdajacyKod IS NULL OR CONCAT(o.Kod, FORMAT(z.Numer, '0#')) LIKE @ZdajacyKod +'%')
- AND (@ZdajacyNazwiska IS NULL OR CONCAT(doz.Nazwisko, ' ', COALESCE(doz.NazwiskoRodowe, '')) LIKE '%'+ @ZdajacyNazwiska +'%')
- AND (@ZdajacyImiona IS NULL OR REPLACE(CONCAT(doz.Imie, ' ', COALESCE(doz.DrugieImie, '')), '-', ' ') LIKE '%'+ @ZdajacyImiona +'%')
- AND (@NumerDokumentuLubPesel IS NULL OR COALESCE(doz.Pesel, doz.NumerDokumentu) LIKE '%'+@NumerDokumentuLubPesel +'%')
- AND (@PlacowkaKod IS NULL OR p.Kod LIKE @PlacowkaKod +'%')
- AND (@PlacowkaNazwa IS NULL OR p.Nazwa LIKE '%' + @PlacowkaNazwa +'%')
- AND (NOT EXISTS (SELECT TOP 1 1 FROM @TypyArkusza) OR ta_d.ID IN (SELECT ID FROM @TypyArkusza))
- AND (@TypZgloszeniaDlaRozporzadzeniaID IS NULL OR tzdr.ID = @TypZgloszeniaDlaRozporzadzeniaID)
- AND (NOT EXISTS (SELECT TOP 1 1 FROM @IdDeklaracjiEgzaminuDlaUprawnien) OR de.ID IN (SELECT ID FROM @IdDeklaracjiEgzaminuDlaUprawnien))
- AND de.IdSesjaEgzaminacyjna = @SesjaEgzaminacyjnaID
- AND (@TypEgzaminuID IS NULL OR te.ID = @TypEgzaminuID)
- AND p.IdOkregowaKomisjaEgzaminacyjna = @OkeID
- AND (@OstatniaAktualizacjaOd IS NULL OR @OstatniaAktualizacjaDo IS NULL OR (f.OstatniaAktualizacja BETWEEN @OstatniaAktualizacjaOd AND @OstatniaAktualizacjaDo))
- AND sd.ID <> 2 --2: Wykreslona deklaracja
- ORDER BY
- CASE WHEN @OrderBy = 'PlacowkaKod' AND @IsDescending = 0 THEN p.Kod END ASC,
- CASE WHEN @OrderBy = 'PlacowkaKod' AND @IsDescending = 1 THEN p.Kod END DESC,
- CASE WHEN @OrderBy = 'PlacowkaNazwa' AND @IsDescending = 0 THEN p.Nazwa END ASC,
- CASE WHEN @OrderBy = 'PlacowkaNazwa' AND @IsDescending = 1 THEN p.Nazwa END DESC,
- CASE WHEN @OrderBy = 'KodUcznia' AND @IsDescending = 0 THEN CONCAT(o.Kod, FORMAT(z.Numer, '0#')) END ASC,
- CASE WHEN @OrderBy = 'KodUcznia' AND @IsDescending = 1 THEN CONCAT(o.Kod, FORMAT(z.Numer, '0#')) END DESC,
- CASE WHEN @OrderBy = 'Imie' AND @IsDescending = 0 THEN CONCAT(doz.Imie, ' ', COALESCE(doz.DrugieImie, '')) END ASC,
- CASE WHEN @OrderBy = 'Imie' AND @IsDescending = 1 THEN CONCAT(doz.Imie, ' ', COALESCE(doz.DrugieImie, '')) END DESC,
- CASE WHEN @OrderBy = 'Nazwisko' AND @IsDescending = 0 THEN CONCAT(doz.Nazwisko, ' ', COALESCE(doz.NazwiskoRodowe, '')) END ASC,
- CASE WHEN @OrderBy = 'Nazwisko' AND @IsDescending = 1 THEN CONCAT(doz.Nazwisko, ' ', COALESCE(doz.NazwiskoRodowe, '')) END DESC,
- CASE WHEN @OrderBy = 'NumerDokumentuLubPesel' AND @IsDescending = 0 THEN COALESCE(doz.Pesel, doz.NumerDokumentu) END ASC,
- CASE WHEN @OrderBy = 'NumerDokumentuLubPesel' AND @IsDescending = 1 THEN COALESCE(doz.Pesel, doz.NumerDokumentu) END DESC,
- CASE WHEN @OrderBy = 'TypArkusza' AND @IsDescending = 0 THEN ta_d.Nazwa END ASC,
- CASE WHEN @OrderBy = 'TypArkusza' AND @IsDescending = 1 THEN ta_d.Nazwa END DESC,
- CASE WHEN @OrderBy = 'Uprawnienie' AND @IsDescending = 0 THEN ud.Nazwa END ASC,
- CASE WHEN @OrderBy = 'Uprawnienie' AND @IsDescending = 1 THEN ud.Nazwa END DESC,
- CASE WHEN @OrderBy = 'Dostosowania' AND @IsDescending = 0 THEN d.Nazwa END ASC,
- CASE WHEN @OrderBy = 'Dostosowania' AND @IsDescending = 1 THEN d.Nazwa END DESC,
- CASE WHEN @OrderBy = 'TypEgzaminuID' AND @IsDescending = 0 THEN te.ID END ASC,
- CASE WHEN @OrderBy = 'TypEgzaminuID' AND @IsDescending = 1 THEN te.ID END DESC,
- CASE WHEN @OrderBy = 'OstatniaAktualizacja' AND @IsDescending = 0 THEN f.OstatniaAktualizacja END ASC,
- CASE WHEN @OrderBy = 'OstatniaAktualizacja' AND @IsDescending = 1 THEN f.OstatniaAktualizacja END DESC,
- de.ID, dek.ID
- OFFSET @PageOffset ROWS
- FETCH NEXT @PageSize ROWS ONLY
- )
- SELECT
- DeklaracjaID,
- CTE.DeklaracjaEgzaminuID
- DeklaracjaEgzaminuID,
- PlacowkaID,
- PlacowkaKod,
- PlacowkaNazwa,
- OddzialID,
- OddzialOznaczenie,
- DaneOsoboweID,
- ZdajacyID,
- ZdajacyImie,
- ZdajacyDrugieImie,
- ZdajacyNazwisko,
- ZdajacyNazwiskoRodowe,
- ZdajacyNumer,
- ZdajacyPesel,
- ZdajacyNumerDokumentu,
- TypArkuszaID,
- TypArkuszaKod,
- TypArkuszaNazwa,
- StanDeklaracjiID,
- StanDeklaracjiNazwa,
- TypZgloszeniaDlaRozporzadzeniaID,
- TypZgloszeniaDlaRozporzadzeniaNazwa,
- TypEgzaminuID,
- TypEgzaminuNazwa,
- d.ID AS DostosowanieID,
- d.Nazwa AS DostosowanieNazwa,
- ud.ID AS UprawnienieDoDostosowanID,
- ud.Nazwa AS UprawnienieDoDostosowanNazwa,
- d.CzyWplywaNaZamowienie AS DostosowanieCzyWplywaNaZamowienie,
- d.KolorTla AS DostosowanieKolorTla,
- d.IdIkonaDostosowania AS IkonaDostosowaniaID,
- OstatniaAktualizacja,
- UzytkownikID,
- UzytkownikImie,
- UzytkownikNazwisko,
- LiczbaZdajacych
- FROM CTE
- INNER JOIN deklaracja.DeklaracjaEgzaminuDostosowanie ded on ded.IdDeklaracjaEgzaminu = CTE.DeklaracjaEgzaminuID
- INNER JOIN deklaracja.DeklaracjaUprawnienie du ON du.IdDeklaracja = CTE.DeklaracjaID
- INNER JOIN egzamin.Dostosowanie AS d ON ded.IdDostosowanie = d.ID
- INNER JOIN egzamin.UprawnienieDoDostosowan AS ud ON ud.ID = du.IdUprawnienie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement