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