init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,195 @@
|
|||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('[dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyStatisztika]') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyStatisztika]
|
||||
END
|
||||
GO
|
||||
|
||||
-- ===================================================================
|
||||
-- Author: Badits-Nyáradi József
|
||||
-- ===================================================================
|
||||
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyStatisztika]
|
||||
@pTanevId INT,
|
||||
@pOsztalyId INT,
|
||||
@pIntezmenyId INT,
|
||||
@pErtekelestipusaId INT,
|
||||
@pLezaroNaptipusId INT,
|
||||
@pTanoraiCsoportTipusIds INT = 1034,
|
||||
@pMulasztasTipusIdKeses INT = 1499,
|
||||
@pMulasztasTipusIdHianyzas INT = 1500,
|
||||
@pNemMulasztaIgazolasTipusIds INT = 1532, -- Iskola érdekű távollét
|
||||
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394, --Tanévrendje első nap típus
|
||||
@pElmeletgyakorlat BIT = 0
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
DECLARE @idoszakEleje DATE = (
|
||||
SELECT COALESCE(
|
||||
(SELECT C_DATUM FROM T_TANEVRENDJE WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pTanevrendjeTanevKezdeteNaptipusId),
|
||||
(SELECT C_ELSOTANITASINAP FROM T_TANEV WHERE ID = @pTanevId))
|
||||
);
|
||||
DECLARE @idoszakVege DATE = (
|
||||
SELECT COALESCE(
|
||||
(SELECT C_DATUM FROM T_TANEVRENDJE WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pLezaroNaptipusId),
|
||||
GETDATE())
|
||||
);
|
||||
|
||||
DECLARE @osztalyoktanoraicsoportok TABLE (OSZTALYCSOPORTID INT PRIMARY KEY, C_TIPUSA INT, C_VEGZOSEVFOLYAM CHAR(1));
|
||||
DECLARE @osztalycsoportok TABLE (OSZTALYCSOPORTID INT PRIMARY KEY);
|
||||
DECLARE @aktualisOsztalyCsoportok TABLE (OSZTALYCSOPORTID INT);
|
||||
DECLARE @osztalyTanulok TABLE (TANULOID INT PRIMARY KEY, BELEPESDATUM DATE, KILEPESDATUM DATE);
|
||||
DECLARE @szurtErtekeles TABLE (
|
||||
T_TANULOERTEKELES_ID INT PRIMARY KEY, C_TANULOID INT, ERTEKELES NVARCHAR(MAX), C_ERTEKELESDATUM DATETIME,
|
||||
C_TANTARGYID INT, TANTARGY_NEV NVARCHAR(255), TARGYKATEGORIA_NEV NVARCHAR(255), TARGYKATEGORIA_SORSZAM INT, T_TANTARGY_C_FOTARGYE CHAR(1), T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1)
|
||||
);
|
||||
DECLARE @szurtMulasztas TABLE (TIPUS_CHAR CHAR(1), C_TIPUS INT , C_IGAZOLT CHAR(1), C_TANULOID INT, C_GYAKORLATI CHAR(1), KESESPERC INT, MULASZTASOK_SZAMA INT);
|
||||
|
||||
INSERT INTO @osztalyoktanoraicsoportok (OSZTALYCSOPORTID, C_TIPUSA, C_VEGZOSEVFOLYAM) (
|
||||
SELECT T_OSZTALYCSOPORT.ID, C_TIPUSA, C_VEGZOSEVFOLYAM
|
||||
FROM T_OSZTALYCSOPORT
|
||||
LEFT JOIN T_CSOPORT ON T_OSZTALYCSOPORT.ID = T_CSOPORT.ID
|
||||
LEFT JOIN T_OSZTALY ON T_OSZTALYCSOPORT.ID = T_OSZTALY.ID
|
||||
WHERE ( C_TIPUSA IN (@pTanoraiCsoportTipusIds) OR T_OSZTALY.ID IS NOT NULL) AND C_TANEVID = @pTanevId
|
||||
);
|
||||
|
||||
INSERT INTO @osztalycsoportok (OSZTALYCSOPORTID) (
|
||||
SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyId)
|
||||
WHERE (ID IN (SELECT ID FROM T_OSZTALY) OR ID IN (SELECT ID FROM T_CSOPORT WHERE C_TIPUSA IN (@pTanoraiCsoportTipusIds)))
|
||||
);
|
||||
|
||||
INSERT INTO @aktualisOsztalyCsoportok (OSZTALYCSOPORTID) (
|
||||
SELECT ID FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyId, @idoszakEleje, @idoszakVege)
|
||||
WHERE (ID IN (SELECT ID FROM T_OSZTALY_OSSZES) OR ID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (@pTanoraiCsoportTipusIds)))
|
||||
);
|
||||
|
||||
-- TANULÓK
|
||||
INSERT INTO @osztalyTanulok (TANULOID, BELEPESDATUM, KILEPESDATUM) (
|
||||
SELECT T_FELHASZNALO_OSSZES.ID AS TANULOID, C_BELEPESDATUM, C_KILEPESDATUM
|
||||
FROM T_FELHASZNALO_OSSZES
|
||||
INNER JOIN (
|
||||
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM
|
||||
FROM T_TANULOCSOPORT_OSSZES
|
||||
WHERE T_TANULOCSOPORT_OSSZES.TOROLT = 'F' AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < @idoszakVege
|
||||
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= @idoszakVege)
|
||||
) AS TANCSOPORT ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID
|
||||
WHERE T_FELHASZNALO_OSSZES.TOROLT = 'F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId AND T_FELHASZNALO_OSSZES.C_TANEVID = @pTanevId
|
||||
);
|
||||
|
||||
-- OSZTÁLY
|
||||
SELECT T_OSZTALY.ID, C_NEV, C_VEGZOSEVFOLYAM, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV, C_OSZTALYNAPLOMEGNYITASA, C_OSZTALYNAPLOZARASA, C_OSZTALYFONOKID
|
||||
FROM T_OSZTALY
|
||||
INNER JOIN T_OSZTALYCSOPORT ON T_OSZTALYCSOPORT.ID = T_OSZTALY.ID
|
||||
INNER JOIN T_FELHASZNALO_OSSZES ON T_OSZTALY.C_OSZTALYFONOKID = T_FELHASZNALO_OSSZES.ID
|
||||
INNER JOIN T_FELADATELLATASIHELY ON T_FELADATELLATASIHELY.ID = T_OSZTALYCSOPORT.C_FELADATELLATASIHELYID
|
||||
WHERE T_OSZTALYCSOPORT.ID = @pOsztalyId;
|
||||
|
||||
--TANULÓK LISTA
|
||||
SELECT T_FELHASZNALO_OSSZES.ID AS C_TANULOID, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS TANULONEV, T_FELHASZNALO_OSSZES.C_ANYJANEVE ANYJANEVE, T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO AS OKTATASIAZONOSITO, BELEPESDATUM, KILEPESDATUM
|
||||
FROM T_FELHASZNALO_OSSZES
|
||||
INNER JOIN @osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = T_FELHASZNALO_OSSZES.ID
|
||||
ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV;
|
||||
|
||||
-- ÉRTÉKELÉS
|
||||
INSERT INTO @szurtErtekeles (T_TANULOERTEKELES_ID, C_TANULOID, ERTEKELES, C_ERTEKELESDATUM, C_TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, T_TANTARGY_C_FOTARGYE, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN) (
|
||||
SELECT T_TANULOERTEKELES.ID, C_TANULOID, COALESCE(CONVERT(NVARCHAR, ODIB.C_VALUE), T_TANULOERTEKELES.C_ERTEKELESSZOVEG, CONVERT(NVARCHAR, C_SZAZALEK)) AS ERTEKELES, C_ERTEKELESDATUM,
|
||||
C_TANTARGYID, T_TANTARGY.C_NEVNYOMTATVANYBAN AS TANTARGY_NEV, T_DICTIONARYITEMBASE.C_NAME AS TARGYKATEGORIA_NEV, T_DICTIONARYITEMBASE.C_VALUE AS TARGYKATEGORIA_SORSZAM, T_TANTARGY.C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
|
||||
FROM T_OSZTALYZATERTEKELES
|
||||
INNER JOIN T_TANULOERTEKELES ON T_TANULOERTEKELES.ID = T_OSZTALYZATERTEKELES.ID
|
||||
INNER JOIN T_TANTARGY ON T_TANTARGY.ID = T_TANULOERTEKELES.C_TANTARGYID AND T_TANTARGY.C_TANEVID = T_TANULOERTEKELES.C_TANEVID
|
||||
LEFT JOIN T_OSZTALYZATTIPUS ON T_OSZTALYZATTIPUS.ID = T_TANULOERTEKELES.C_OSZTALYZAT
|
||||
LEFT JOIN T_DICTIONARYITEMBASE AS ODIB ON ODIB.ID = T_OSZTALYZATTIPUS.ID
|
||||
LEFT JOIN T_TARGYKATEGORIATIPUS ON T_TARGYKATEGORIATIPUS.ID = T_TANTARGY.C_TARGYKATEGORIA
|
||||
LEFT JOIN T_DICTIONARYITEMBASE ON T_DICTIONARYITEMBASE.ID = T_TARGYKATEGORIATIPUS.ID
|
||||
INNER JOIN @OSZTALYTANULOK AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = T_TANULOERTEKELES.C_TANULOID
|
||||
WHERE T_TANULOERTEKELES.C_INTEZMENYID = @pIntezmenyId AND T_OSZTALYZATERTEKELES.TOROLT = 'F' AND T_TANULOERTEKELES.C_TANEVID = @pTanevId AND C_ERTEKELESTIPUSA = @pErtekelestipusaId AND (T_TANTARGY.C_FOTARGYE = 'T' OR C_ALTANTARGYKENTNYOMTATVANYBAN = 'T' )
|
||||
);
|
||||
|
||||
-- TANTÁRGYAK (TANTÁRGYFELOSZTÁS, ÉRTÉKELÉS)
|
||||
SELECT DISTINCT C_TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
|
||||
FROM (
|
||||
SELECT DISTINCT C_TANTARGYID, T_TANTARGY.C_NEVNYOMTATVANYBAN AS TANTARGY_NEV, T_DICTIONARYITEMBASE.C_NAME AS TARGYKATEGORIA_NEV, T_DICTIONARYITEMBASE.C_VALUE AS TARGYKATEGORIA_SORSZAM, T_TANTARGY.C_FOTARGYE, T_TANTARGY.C_ALTANTARGYKENTNYOMTATVANYBAN
|
||||
FROM T_FOGLALKOZAS
|
||||
INNER JOIN @aktualisOsztalyCsoportok AS OSZTALYCSOPORT ON OSZTALYCSOPORT.OSZTALYCSOPORTID = T_FOGLALKOZAS.C_OSZTALYCSOPORTID
|
||||
INNER JOIN T_TANTARGY ON T_TANTARGY.ID = T_FOGLALKOZAS.C_TANTARGYID AND T_TANTARGY.C_TANEVID = T_FOGLALKOZAS.C_TANEVID
|
||||
LEFT JOIN T_TARGYKATEGORIATIPUS ON T_TARGYKATEGORIATIPUS.ID = T_TANTARGY.C_TARGYKATEGORIA
|
||||
LEFT JOIN T_DICTIONARYITEMBASE ON T_DICTIONARYITEMBASE.ID = T_TARGYKATEGORIATIPUS.ID
|
||||
WHERE T_FOGLALKOZAS.TOROLT = 'F' AND (T_TANTARGY.C_FOTARGYE = 'T' OR C_ALTANTARGYKENTNYOMTATVANYBAN = 'T')
|
||||
UNION
|
||||
SELECT DISTINCT C_TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, T_TANTARGY_C_FOTARGYE AS C_FOTARGYE, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN AS C_ALTANTARGYKENTNYOMTATVANYBAN
|
||||
FROM @szurtErtekeles
|
||||
) AS TANTARGYAK
|
||||
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
|
||||
|
||||
SELECT * FROM @szurtErtekeles;
|
||||
|
||||
SELECT T_TANULOERTEKELES.ID, C_TANULOID, C_MAGATARTAS, C_VALUE_M, C_NAME_M, C_SZORGALOM, C_VALUE_SZ, C_NAME_SZ, T_TANULOERTEKELES.C_ERTEKELESSZOVEG, C_ERTEKELESDATUM, T_OSZTALYFONOKIERTEKELES.TOROLT
|
||||
FROM T_OSZTALYFONOKIERTEKELES
|
||||
INNER JOIN T_TANULOERTEKELES ON T_TANULOERTEKELES.ID = T_OSZTALYFONOKIERTEKELES.ID
|
||||
INNER JOIN (SELECT DISTINCT ID AS ID_SZ, C_VALUE AS C_VALUE_SZ, C_NAME AS C_NAME_SZ FROM T_DICTIONARYITEMBASE) AS T_DICTIONARYITEMBASE_SZ ON T_DICTIONARYITEMBASE_SZ.ID_SZ = T_OSZTALYFONOKIERTEKELES.C_SZORGALOM
|
||||
INNER JOIN (SELECT DISTINCT ID AS ID_M, C_VALUE AS C_VALUE_M, C_NAME AS C_NAME_M FROM T_DICTIONARYITEMBASE) AS T_DICTIONARYITEMBASE_M ON T_DICTIONARYITEMBASE_M.ID_M = T_OSZTALYFONOKIERTEKELES.C_MAGATARTAS
|
||||
INNER JOIN @osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = T_TANULOERTEKELES.C_TANULOID
|
||||
WHERE T_TANULOERTEKELES.C_INTEZMENYID = @pIntezmenyId AND T_OSZTALYFONOKIERTEKELES.TOROLT = 'F' AND T_TANULOERTEKELES.C_TANEVID = @pTanevId AND C_ERTEKELESTIPUSA = @pErtekelestipusaId
|
||||
|
||||
--MULASZTÁS
|
||||
INSERT INTO @szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, C_GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA) (
|
||||
SELECT CASE WHEN C_TIPUS = @pMulasztasTipusIdKeses THEN 'K' ELSE 'H' END AS TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI, SUM(C_KESESPERCBEN) AS KESESPERC, COUNT(T_TANULOMULASZTAS.ID) AS MULASZTASOK_SZAMA
|
||||
FROM T_TANULOMULASZTAS
|
||||
INNER JOIN @osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = T_TANULOMULASZTAS.C_ORATANULOIID
|
||||
INNER JOIN T_TANITASIORA ON T_TANITASIORA.ID = T_TANULOMULASZTAS.C_TANITASIORAKID
|
||||
INNER JOIN T_TANTARGY ON T_TANTARGY.ID = T_TANITASIORA.C_TANTARGYID AND T_TANTARGY.C_TANEVID = T_TANITASIORA.C_TANEVID
|
||||
INNER JOIN T_TANULOCSOPORT ON T_TANITASIORA.C_OSZTALYCSOPORTID = T_TANULOCSOPORT.C_OSZTALYCSOPORTID AND T_TANULOMULASZTAS.C_ORATANULOIID = T_TANULOCSOPORT.C_TANULOID
|
||||
AND T_TANITASIORA.C_DATUM >= T_TANULOCSOPORT.C_BELEPESDATUM AND (T_TANITASIORA.C_DATUM < T_TANULOCSOPORT.C_KILEPESDATUM OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
|
||||
INNER JOIN @osztalyoktanoraicsoportok AS OSZTALYOKTANORAICSOPORTOK ON T_TANITASIORA.C_OSZTALYCSOPORTID = OSZTALYOKTANORAICSOPORTOK.OSZTALYCSOPORTID
|
||||
WHERE T_TANULOMULASZTAS.C_INTEZMENYID = @pIntezmenyId AND T_TANULOMULASZTAS.TOROLT='F' AND T_TANITASIORA.TOROLT = 'F' AND T_TANITASIORA.C_DATUM BETWEEN @idoszakEleje AND @idoszakVege
|
||||
AND C_IGAZOLT IS NOT NULL AND T_TANULOMULASZTAS.C_TANEVID=@pTanevId AND T_TANULOMULASZTAS.C_TIPUS IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas) AND (C_IGAZOLASTIPUSA IS NULL OR C_IGAZOLASTIPUSA NOT IN (@pNemMulasztaIgazolasTipusIds))
|
||||
GROUP BY C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI
|
||||
);
|
||||
|
||||
IF @pElmeletgyakorlat=0
|
||||
BEGIN
|
||||
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, SUM(KESESPERC) AS KESESPERC, SUM(KESESPERC)/45 AS KESESORA, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
|
||||
FROM @szurtMulasztas
|
||||
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
|
||||
ORDER BY C_TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
|
||||
|
||||
SELECT C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
|
||||
FROM (
|
||||
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, SUM(KESESPERC)/45 AS MULASZTASOK_SZAMA
|
||||
FROM @szurtMulasztas
|
||||
WHERE TIPUS_CHAR = 'K'
|
||||
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
|
||||
UNION ALL
|
||||
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
|
||||
FROM @szurtMulasztas
|
||||
WHERE TIPUS_CHAR = 'H'
|
||||
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
|
||||
) AS KM
|
||||
GROUP BY C_IGAZOLT, C_TANULOID
|
||||
ORDER BY C_TANULOID, C_IGAZOLT DESC;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, KESESPERC, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 60 ELSE 45 END) AS KESESORA, MULASZTASOK_SZAMA, C_GYAKORLATI
|
||||
FROM @szurtMulasztas
|
||||
ORDER BY C_TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
|
||||
|
||||
SELECT C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, C_GYAKORLATI
|
||||
FROM (
|
||||
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 60 ELSE 45 END) AS MULASZTASOK_SZAMA, C_GYAKORLATI
|
||||
FROM @szurtMulasztas
|
||||
WHERE TIPUS_CHAR = 'K'
|
||||
UNION ALL
|
||||
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI
|
||||
FROM @szurtMulasztas
|
||||
WHERE TIPUS_CHAR = 'H'
|
||||
) AS KM
|
||||
GROUP BY C_IGAZOLT, C_TANULOID, C_GYAKORLATI
|
||||
ORDER BY C_TANULOID, C_IGAZOLT DESC;
|
||||
END
|
||||
|
||||
END
|
Loading…
Add table
Add a link
Reference in a new issue