193 lines
11 KiB
Transact-SQL
193 lines
11 KiB
Transact-SQL
IF OBJECT_ID('sp_GetBizonyitvany12161') IS NOT NULL
|
|
DROP PROCEDURE sp_GetBizonyitvany12161
|
|
GO
|
|
|
|
CREATE PROCEDURE sp_GetBizonyitvany12161
|
|
@osztalyCsoportId int,
|
|
@felev int,
|
|
@TanevId int
|
|
AS
|
|
BEGIN
|
|
|
|
IF OBJECT_ID('tempdb..#TANTARGY') IS NOT NULL BEGIN
|
|
DROP TABLE #TANTARGY
|
|
END
|
|
|
|
CREATE TABLE #TANTARGY (
|
|
ID int primary key,
|
|
NEV nvarchar(255),
|
|
ORAK int,
|
|
OSZTALYFONOKI bit
|
|
)
|
|
|
|
INSERT INTO #TANTARGY (ID, NEV, ORAK, OSZTALYFONOKI)
|
|
SELECT
|
|
T_TANTARGY_OSSZES.ID AS ID,
|
|
T_TANTARGY_OSSZES.C_NEV AS NEV,
|
|
COUNT(T_TANITASIORA_OSSZES.ID) AS ORAK,
|
|
IIF(D.C_NAME = 'Osztályfőnöki, élet- és pályatervezés', 1, 0) AS OSZTALYFONOKI
|
|
FROM T_TANTARGY_OSSZES
|
|
INNER JOIN T_TANITASIORA_OSSZES on T_TANTARGY_OSSZES.ID = T_TANITASIORA_OSSZES.C_TANTARGYID AND T_TANITASIORA_OSSZES.TOROLT='F'
|
|
INNER JOIN T_FOGLALKOZAS_OSSZES ON T_TANTARGY_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID AND T_FOGLALKOZAS_OSSZES.TOROLT='F'
|
|
INNER JOIN T_TANEV_OSSZES ON T_FOGLALKOZAS_OSSZES.C_TANEVID = T_TANEV_OSSZES.ID AND T_TANEV_OSSZES.TOROLT = 'F'
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES D ON T_TANTARGY_OSSZES.C_TARGYKATEGORIA = D.ID
|
|
WHERE T_TANTARGY_OSSZES.TOROLT = 'F'
|
|
AND T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID = @osztalyCsoportId
|
|
AND T_TANITASIORA_OSSZES.C_DATUM BETWEEN T_TANEV_OSSZES.C_ELSOTANITASINAP AND T_TANEV_OSSZES.C_UTOLSOTANITASINAP
|
|
AND T_TANITASIORA_OSSZES.C_MEGTARTOTT = 'T'
|
|
AND T_TANEV_OSSZES.ID = @TanevId
|
|
GROUP BY T_TANTARGY_OSSZES.ID,T_TANTARGY_OSSZES.C_NEV, IIF(D.C_NAME = 'Osztályfőnöki, élet- és pályatervezés', 1, 0)
|
|
|
|
DECLARE @jegySelect nvarchar(MAX) = N'',
|
|
@jegyFrom nvarchar(MAX) = N'FROM T_TANULOCSOPORT_OSSZES TCS',
|
|
@jegyWhere nvarchar(MAX),
|
|
@sql nvarchar(MAX),
|
|
@bizSelect nvarchar(MAX),
|
|
@bizJoin nvarchar(MAX),
|
|
@mulSql nvarchar(MAX),
|
|
@felevJegy int
|
|
|
|
SELECT @felevJegy = ID
|
|
FROM T_DICTIONARYITEMBASE_OSSZES
|
|
WHERE C_TYPE = 'ErtekelesTipus'
|
|
AND C_TANEVID = @TanevId
|
|
AND C_NAME = IIF(@felev = 1, 'Félévi jegy/értékelés', 'Évvégi jegy/értékelés')
|
|
|
|
SET @bizSelect =
|
|
'SELECT * FROM (
|
|
SELECT
|
|
T_FELHASZNALO_OSSZES.ID AS [BIZTANULOID],
|
|
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS [név],
|
|
T_FELHASZNALO_OSSZES.C_VEZETEKNEV + '' '' + T_FELHASZNALO_OSSZES.C_UTONEV AS [családi és utónév],
|
|
T_FELHASZNALO_OSSZES.C_SZULETESIHELY AS [szül_hely_település],
|
|
Orszag.C_NAME AS [szül_hely_ország],
|
|
CONVERT(DATE,T_FELHASZNALO_OSSZES.C_SZULETESIDATUM) AS [szül_idő],
|
|
Allampolg.C_NAME AS [állampolgárság],
|
|
Anyanyelv.C_NAME AS [anyanyelv],
|
|
T_FELHASZNALO_OSSZES.C_ANYJANEVE AS [anyja_neve],
|
|
T_GONDVISELO_OSSZES.C_NEV AS [apa_neve],
|
|
T_INTEZMENYADATOK_OSSZES.C_VAROS AS [kelt_település],
|
|
YEAR(GETDATE()) AS [kelt_év],
|
|
MONTH(GETDATE()) AS [kelt_hó],
|
|
DAY(GETDATE()) AS [kelt_nap],
|
|
T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO AS [om_azonosító],
|
|
'''' AS [törzslapszám_szám],
|
|
ROW_NUMBER() OVER (ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV) AS [törzslapszám_év],
|
|
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS [név2],
|
|
YEAR(T_TANEV_OSSZES.C_KEZDONAP) AS [tanév_tól],
|
|
YEAR(T_TANEV_OSSZES.C_UTOLSONAP) AS [tanév_ig],
|
|
IIF(@felev = 1, ''Első'', ''Második'') AS [félév],
|
|
T_INTEZMENYADATOK_OSSZES.C_NEV + '' '' + T_MUKODESIHELY_OSSZES.C_NEV + '', ''+ T_MUKODESIHELY_OSSZES.C_IRANYITOSZAM + '' '' + T_MUKODESIHELY_OSSZES.C_VAROS + T_MUKODESIHELY_OSSZES.C_CIME AS [iskola_neve_címe],
|
|
IskolaTipus.C_NAME AS [iskola_tipus],
|
|
Evfolyam.C_NAME AS [évfolyam_száma],
|
|
T_OSZTALYCSOPORT_OSSZES.C_NEV AS [osztály],
|
|
DM.C_NAME AS [magatartás],
|
|
DSZ.C_NAME AS [szorgalom]
|
|
FROM T_FELHASZNALO_OSSZES
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Orszag ON T_FELHASZNALO_OSSZES.C_SZULETESIORSZAG = Orszag.ID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Allampolg ON T_FELHASZNALO_OSSZES.C_ALLAMPOLGARSAGA = Allampolg.ID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Anyanyelv ON T_FELHASZNALO_OSSZES.C_ANYANYELVE = Anyanyelv.ID
|
|
LEFT JOIN T_FELHASZNALOBELEPES_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_FELHASZNALOBELEPES_OSSZES.C_FELHASZNALOID AND T_FELHASZNALOBELEPES_OSSZES.C_GONDVISELOID IS NOT NULL AND T_FELHASZNALOBELEPES_OSSZES.TOROLT=''F''
|
|
LEFT JOIN T_GONDVISELO_OSSZES ON T_FELHASZNALOBELEPES_OSSZES.C_GONDVISELOID = T_GONDVISELO_OSSZES.ID AND T_GONDVISELO_OSSZES.C_ROKONSAGFOKA = 2 --Apa
|
|
AND T_GONDVISELO_OSSZES.TOROLT=''F''
|
|
INNER JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.TOROLT = ''F''
|
|
INNER JOIN T_INTEZMENYADATOK_OSSZES ON T_INTEZMENYADATOK_OSSZES.C_TANEVID = T_TANEV_OSSZES.ID AND T_INTEZMENYADATOK_OSSZES.TOROLT = ''F''
|
|
LEFT JOIN T_TANEVRENDJE_OSSZES ON T_TANEVRENDJE_OSSZES.C_NAPTIPUSA = 1400 AND T_TANEVRENDJE_OSSZES.C_TANEVID = T_TANEV_OSSZES.ID AND T_TANEVRENDJE_OSSZES.TOROLT = ''F''
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_TANULOID AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM > GETDATE()) AND T_TANULOCSOPORT_OSSZES.TOROLT = ''F''
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = T_OSZTALYCSOPORT_OSSZES.ID AND T_OSZTALYCSOPORT_OSSZES.TOROLT = ''F''
|
|
INNER JOIN T_OSZTALY_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_OSZTALY_OSSZES.ID AND T_OSZTALY_OSSZES.TOROLT = ''F''
|
|
INNER JOIN T_FELADATELLATASIHELY_OSSZES ON T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID = T_FELADATELLATASIHELY_OSSZES.ID AND T_FELADATELLATASIHELY_OSSZES.TOROLT = ''F''
|
|
INNER JOIN T_MUKODESIHELY_OSSZES ON T_FELADATELLATASIHELY_OSSZES.C_MUKODESIHELYID = T_MUKODESIHELY_OSSZES.ID AND T_MUKODESIHELY_OSSZES.TOROLT = ''F''
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES IskolaTipus ON T_FELADATELLATASIHELY_OSSZES.C_OKTATASINEVELESIFELADATTIPUS = IskolaTipus.ID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Evfolyam ON T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA = Evfolyam.ID
|
|
LEFT JOIN (
|
|
SELECT te.C_TANULOID, ofe.C_MAGATARTAS, ofe.C_SZORGALOM FROM T_TANULOERTEKELES_OSSZES te
|
|
INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES ofe ON ofe.ID = te.ID AND ofe.TOROLT = ''F''
|
|
WHERE te.TOROLT = ''F'' AND te.C_ERTEKELESTIPUSA = @felevJegy
|
|
) MSZ ON MSZ.C_TANULOID = T_FELHASZNALO_OSSZES.ID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES DM ON DM.ID = MSZ.C_MAGATARTAS
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES DSZ ON DSZ.ID = MSZ.C_SZORGALOM
|
|
WHERE T_OSZTALYCSOPORT_OSSZES.ID = @osztalyCsoportId
|
|
AND T_TANEV_OSSZES.ID = @TanevId) BIZ
|
|
|
|
'
|
|
|
|
SET @mulSql = '
|
|
INNER JOIN (
|
|
SELECT tms.C_TANULOID AS MULTANULOID,
|
|
SUM(CASE
|
|
WHEN tms.C_STATISZTIKATIPUS <> 1655 THEN 0
|
|
WHEN @felev = 1 THEN tms.C_OSSZESELSOFELEVMULASZTAS
|
|
ELSE tms.C_OSSZESELSOFELEVMULASZTAS + tms.C_OSSZESMASODIKFELEVMULASZTAS END
|
|
) AS mulasztott_orak_szama,
|
|
SUM(CASE
|
|
WHEN tms.C_STATISZTIKATIPUS <> 1655 THEN 0
|
|
WHEN @felev = 1 THEN tms.C_OSSZESELSOFELEVMULASZTAS
|
|
ELSE tms.C_OSSZESELSOFELEVMULASZTAS + tms.C_OSSZESMASODIKFELEVMULASZTAS END
|
|
) AS mulasztott_orak_osszesen,
|
|
SUM(CASE
|
|
WHEN tms.C_STATISZTIKATIPUS <> 1655 THEN 0
|
|
WHEN @felev = 1 THEN tms.C_OSSZESELSOFELEVELMELETI
|
|
ELSE tms.C_OSSZESELSOFELEVELMELETI + tms.C_OSSZESMASODIKFELEVELMELETI END
|
|
) AS mulasztott_elmelet_osszesen,
|
|
SUM(CASE
|
|
WHEN tms.C_STATISZTIKATIPUS <> 1662 THEN 0
|
|
WHEN @felev = 1 THEN tms.C_OSSZESELSOFELEVELMELETI
|
|
ELSE tms.C_OSSZESELSOFELEVELMELETI + tms.C_OSSZESMASODIKFELEVELMELETI END
|
|
) AS mulasztott_elmelet_igazolatlan,
|
|
SUM(CASE
|
|
WHEN tms.C_STATISZTIKATIPUS <> 1655 THEN 0
|
|
WHEN @felev = 1 THEN tms.C_OSSZESELSOFELEVGYAKORLATI
|
|
ELSE tms.C_OSSZESELSOFELEVGYAKORLATI + tms.C_OSSZESMASODIKFELEVGYAKORLATI END
|
|
) AS mulasztott_gyakorlat_osszesen,
|
|
SUM(CASE
|
|
WHEN tms.C_STATISZTIKATIPUS <> 1662 THEN 0
|
|
WHEN @felev = 1 THEN tms.C_OSSZESELSOFELEVGYAKORLATI
|
|
ELSE tms.C_OSSZESELSOFELEVGYAKORLATI + tms.C_OSSZESMASODIKFELEVGYAKORLATI END
|
|
) AS mulasztott_gyakorlat_igazolatlan
|
|
FROM T_TANULOMULASZTASSTATISZTIKA_OSSZES tms
|
|
WHERE tms.C_STATISZTIKATIPUS IN (1655, 1662)
|
|
and tms.C_TANEVID = @TanevId
|
|
GROUP BY tms.C_TANULOID
|
|
) mul ON mul.MULTANULOID = BIZ.BIZTANULOID
|
|
'
|
|
|
|
SELECT @jegySelect += IIF(#TANTARGY.OSZTALYFONOKI = 1, '', ', D' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.C_NAME AS [' + CAST(#TANTARGY.NEV AS nvarchar(255)) + ' JEGY] ') + ', T' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.ORAK AS [' + CAST(#TANTARGY.NEV AS nvarchar(255)) + ' ORAK]',
|
|
@jegyFrom += IIF(#TANTARGY.OSZTALYFONOKI = 1, '
|
|
LEFT JOIN #TANTARGY T' + CAST(#TANTARGY.ID AS nvarchar(10)) + ' ON T' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.ID = ' + CAST(#TANTARGY.ID AS nvarchar(10)) /*Ha osztályfőnöki*/
|
|
,'
|
|
LEFT JOIN T_TANULOERTEKELES_OSSZES E' + CAST(#TANTARGY.ID AS nvarchar(10)) + ' ON E' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.C_TANTARGYID = ' + CAST(#TANTARGY.ID AS nvarchar(10)) + ' AND TCS.C_TANULOID = E' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.C_TANULOID AND E' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.C_ERTEKELESTIPUSA = @felevJegy AND E' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.C_OSZTALYCSOPORTID = @osztalyCsoportId AND E' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.TOROLT = ''F''
|
|
LEFT JOIN T_OSZTALYZATERTEKELES_OSSZES O' + CAST(#TANTARGY.ID AS nvarchar(10)) + ' ON O' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.ID = E' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.ID AND O' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.TOROLT = ''F''
|
|
LEFT JOIN #TANTARGY T' + CAST(#TANTARGY.ID AS nvarchar(10)) + ' ON E' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.C_TANTARGYID = T' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.ID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES D' + CAST(#TANTARGY.ID AS nvarchar(10)) + ' ON D' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.ID = O' + CAST(#TANTARGY.ID AS nvarchar(10)) + '.C_OSZTALYZAT' /*Ha nem osztályfőnöki*/) --IIF záró zárójele
|
|
FROM #TANTARGY
|
|
ORDER BY #TANTARGY.OSZTALYFONOKI DESC
|
|
|
|
SET @jegyWhere = N'
|
|
WHERE TCS.C_OSZTALYCSOPORTID = @osztalyCsoportId'
|
|
|
|
SET @bizJoin = '
|
|
) JEGY ON JEGY.JEGYTANULOID = BIZ.BIZTANULOID'
|
|
|
|
/*
|
|
Ha a @jegySelect üres string, akkor nem volt az osztálynak tantárgya
|
|
Így majd kimarad a végső nagy selectből (@sql) is.
|
|
*/
|
|
IF @jegySelect <> '' BEGIN
|
|
SET @jegySelect = 'INNER JOIN (
|
|
SELECT TCS.C_TANULOID AS JEGYTANULOID' + @jegySelect
|
|
END
|
|
|
|
SET @sql = @bizSelect + CASE WHEN @jegySelect <> '' THEN @jegySelect + @jegyFrom + @jegyWhere + @bizJoin ELSE '' END + @mulSql
|
|
|
|
EXEC sp_executesql @sql,
|
|
N'@osztalyCsoportId int, @felevJegy int, @felev int, @TanevId int',
|
|
@osztalyCsoportId, @felevJegy, @felev, @TanevId
|
|
|
|
|
|
IF OBJECT_ID('tempdb..#TANTARGY') IS NOT NULL BEGIN
|
|
DROP TABLE #TANTARGY
|
|
END
|
|
END
|
|
GO
|
|
|