DROP PROCEDURE IF EXISTS dbo.uspSzirStatIntezmeny GO CREATE PROCEDURE dbo.uspSzirStatIntezmeny @pTanevId int ,@pIntezmenyid int AS BEGIN DECLARE @datum datetime, @IsSniKezelo bit SELECT @datum = LEFT(tv.C_NEV, 4) + '1001' FROM T_TANEV tv WHERE ID = @pTanevId SET @IsSniKezelo = dbo.fnGetRendszerbeallitasEnumBool(1666, @pIntezmenyid, @pTanevId) SELECT helyek.C_OKTATASINEVELESIFELADATTIPUS AS EllatottFeladatId, ISNULL(feladat.C_NAME, 'ÖSSZESEN') AS EllatottFeladat, SUM(ISNULL(helyek.HelyekSzama, 0)) AS HelyekSzama, SUM(ISNULL(tanulok.OsszesTanulo, 0)) AS OsszesTanulo, SUM(ISNULL(tanulok.Lanyok, 0)) AS Lanyok, SUM(ISNULL(tanulok.Sni, 0)) AS Sni, SUM(ISNULL(tanulok.NemNappali, 0)) AS NemNappali, SUM(ISNULL(tanarok.OsszesTanar, 0)) AS OsszesTanar, SUM(ISNULL(tanarok.NoiTanar, 0)) AS NoiTanar, SUM(ISNULL(termek.TermekSzama, 0)) AS TermekSzama, SUM(ISNULL(osztalyok.Osztalyok, 0)) AS OsztalyokSzama, SUM(ISNULL(dolgozok.Osszes, 0)) AS OsszesDolgozo, SUM(ISNULL(dolgozok.Nok, 0)) AS Nok FROM T_INTEZMENY i INNER JOIN T_TANEV t ON t.C_INTEZMENYID = i.ID AND t.TOROLT = 'F' INNER JOIN ( -- helyek SELECT mh.C_INTEZMENYID, mh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS, COUNT(*) AS HelyekSzama FROM T_MUKODESIHELY mh INNER JOIN T_FELADATELLATASIHELY fh ON fh.C_MUKODESIHELYID = mh.ID AND fh.C_INTEZMENYID = mh.C_INTEZMENYID AND fh.C_TANEVID = mh.C_TANEVID AND fh.TOROLT = 'F' WHERE mh.C_TANEVID = @pTanevId AND mh.TOROLT = 'F' GROUP BY mh.C_INTEZMENYID, mh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS ) helyek ON helyek.C_INTEZMENYID = t.C_INTEZMENYID and helyek.C_TANEVID = t.ID INNER JOIN T_DICTIONARYITEMBASE feladat ON feladat.ID = helyek.C_OKTATASINEVELESIFELADATTIPUS AND feladat.C_INTEZMENYID = helyek.C_INTEZMENYID AND feladat.C_TANEVID = helyek.C_TANEVID AND feladat.TOROLT = 'F' LEFT JOIN ( -- tanulók SELECT C_OKTATASINEVELESIFELADATTIPUS, SUM(1) AS OsszesTanulo, SUM(CASE WHEN C_NEME = 5 THEN 1 ELSE 0 END) AS Lanyok, SUM(CASE WHEN C_FOGYATEKOSSAGTIPUSID IS NOT NULL THEN 1 ELSE 0 END) AS Sni, SUM(CASE WHEN C_TANTERVIJELLEGID IS NULL OR C_TANTERVIJELLEGID IN (1096, 1098) THEN 0 ELSE 1 END) AS NemNappali FROM ( SELECT f.ID, f.C_NEME, fh.C_OKTATASINEVELESIFELADATTIPUS, sni.C_FOGYATEKOSSAGTIPUSID, d.C_NAME, tta.C_TANTERVIJELLEGID FROM T_FELHASZNALO f INNER JOIN T_TANULO t ON t.ID = f.ID AND t.TOROLT = 'F' INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_TANULOID = f.ID AND tcs.TOROLT = 'F' INNER JOIN T_TANULOTANUGYIADATOK tta on tta.C_TANULOCSOPORTID = tcs.ID and tta.TOROLT = 'F' LEFT JOIN T_TANULOSNI sni on sni.C_TANULOID = tcs.C_TANULOID /* and sni.C_KIALLITASDATUMA >= @datum */ and sni.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT ocs on ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' INNER JOIN T_FELADATELLATASIHELY fh on fh.ID = ocs.C_FELADATELLATASIHELYID and fh.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE d on d.ID = sni.C_FOGYATEKOSSAGTIPUSID and d.C_TANEVID = sni.C_TANEVID WHERE f.TOROLT = 'F' AND f.C_TANEVID = @pTanevId AND tcs.C_BELEPESDATUM <= @datum AND ISNULL(tcs.C_KILEPESDATUM, '2999-01-01') > @datum ) t GROUP BY C_OKTATASINEVELESIFELADATTIPUS ) tanulok on tanulok.C_OKTATASINEVELESIFELADATTIPUS = helyek.C_OKTATASINEVELESIFELADATTIPUS LEFT JOIN ( -- tanárok SELECT fh.C_INTEZMENYID, fh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS, SUM(1) AS OsszesTanar, SUM(CASE WHEN f.C_NEME = 5 THEN 1 ELSE 0 END) AS NoiTanar FROM T_ALKALMAZOTT a INNER JOIN T_MUNKAUGYIADATOK m ON m.C_ALKALMAZOTTID = a.ID AND m.TOROLT = 'F' INNER JOIN T_FELADATELLATASIHELY fh ON fh.ID = m.C_FELADATELLATASIHELYID AND fh.TOROLT = 'F' INNER JOIN T_FELHASZNALO f ON f.ID = a.ID AND f.TOROLT = 'F' INNER JOIN T_MUNKAKORTIPUS mt on mt.ID = m.C_MUNKAKORTIPUSA AND mt.C_ALTANEVID = m.C_TANEVID AND mt.TOROLT = 'F' WHERE a.TOROLT = 'F' AND ISNULL(f.C_ELOTAG,'') NOT LIKE '[[]%' AND m.C_TARTOSHELYETTESITES = 'F' AND a.C_ALLANDOHELYETTESITESRE = 'F' AND mt.C_ALKALMAZOTTMUNKAKORTIPUSID = 8384 AND m.C_FOGLALKOZTATASTIPUS IN (6465, 6466) AND ISNULL(m.C_ALKALMAZASKEZDETE, @datum) <= @datum AND ISNULL(m.C_ALKALMAZASMEGSZUNESE, @datum) >= @datum GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS ) tanarok ON tanarok.C_INTEZMENYID = helyek.C_INTEZMENYID AND tanarok.C_TANEVID = helyek.C_TANEVID AND tanarok.C_OKTATASINEVELESIFELADATTIPUS = helyek.C_OKTATASINEVELESIFELADATTIPUS LEFT JOIN ( -- termek SELECT x.C_INTEZMENYID, x.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS, COUNT(*) AS TermekSzama FROM ( SELECT ocs.C_INTEZMENYID, ocs.C_TANEVID, ocs.C_FELADATELLATASIHELYID, oo.C_TEREMID, COUNT(*) AS CNT, ROW_NUMBER() OVER (PARTITION BY oo.C_TEREMID ORDER BY (COUNT(*)) DESC) AS RN FROM T_OSZTALYCSOPORT ocs INNER JOIN T_ORARENDIORA oo ON oo.C_OSZTALYCSOPORTID = ocs.ID AND oo.TOROLT = 'F' INNER JOIN T_ORAREND orr ON orr.C_ORARENDIORAID = oo.ID INNER JOIN T_TEREM t ON t.ID = oo.C_TEREMID AND t.TOROLT = 'F' WHERE ocs.TOROLT = 'F' AND ocs.C_TANEVID = @pTanevId AND t.C_JELLEG IN (207, 187, 181, 182, 184, 2996, 185, 190, 191) -- trm.C_JELLEG IN (182, 181, 184, 185, 191, 190, 193, 194, 195, 196, 198, 199, 200, 201, 202, 188) GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID, ocs.C_FELADATELLATASIHELYID, oo.C_TEREMID ) x INNER JOIN T_FELADATELLATASIHELY fh ON fh.ID = x.C_FELADATELLATASIHELYID AND fh.TOROLT = 'F' WHERE x.RN = 1 GROUP BY x.C_INTEZMENYID, x.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS ) termek ON termek.C_INTEZMENYID = helyek.C_INTEZMENYID AND termek.C_TANEVID = helyek.C_TANEVID AND termek.C_OKTATASINEVELESIFELADATTIPUS = helyek.C_OKTATASINEVELESIFELADATTIPUS LEFT JOIN ( -- osztályok SELECT fh.C_INTEZMENYID, fh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS, COUNT(*) AS Osztalyok FROM T_OSZTALYCSOPORT ocs LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F' LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F' INNER JOIN T_FELADATELLATASIHELY fh ON fh.ID = ocs.C_FELADATELLATASIHELYID WHERE ocs.TOROLT = 'F' AND ocs.C_ISTECHNIKAI = 'F' AND (o.ID IS NOT NULL OR cs.C_TIPUSA = 1032) GROUP by fh.C_INTEZMENYID, fh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS ) osztalyok ON osztalyok.C_INTEZMENYID = helyek.C_INTEZMENYID AND osztalyok.C_TANEVID = helyek.C_TANEVID AND osztalyok.C_OKTATASINEVELESIFELADATTIPUS = helyek.C_OKTATASINEVELESIFELADATTIPUS LEFT JOIN ( -- dolgozók SELECT fh.C_INTEZMENYID, fh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS, SUM(1) AS Osszes, SUM(CASE WHEN f.C_NEME = 5 THEN 1 ELSE 0 END) AS Nok FROM T_ALKALMAZOTT a INNER JOIN T_MUNKAUGYIADATOK m ON m.C_ALKALMAZOTTID = a.ID AND m.TOROLT = 'F' INNER JOIN T_FELADATELLATASIHELY fh ON fh.ID = m.C_FELADATELLATASIHELYID AND fh.TOROLT = 'F' INNER JOIN T_FELHASZNALO f ON f.ID = a.ID AND f.TOROLT = 'F' INNER JOIN T_MUNKAKORTIPUS mt on mt.ID = m.C_MUNKAKORTIPUSA AND mt.C_ALTANEVID = m.C_TANEVID AND mt.TOROLT = 'F' WHERE a.TOROLT = 'F' AND ISNULL(f.C_ELOTAG,'') NOT LIKE '[[]%' AND m.C_TARTOSHELYETTESITES = 'F' AND a.C_ALLANDOHELYETTESITESRE = 'F' AND mt.C_ALKALMAZOTTMUNKAKORTIPUSID <> 8384 AND m.C_FOGLALKOZTATASTIPUS IN (6465, 6466) AND ISNULL(m.C_ALKALMAZASKEZDETE, @datum) <= @datum AND ISNULL(m.C_ALKALMAZASMEGSZUNESE, @datum) >= @datum GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID, fh.C_OKTATASINEVELESIFELADATTIPUS ) dolgozok ON dolgozok.C_INTEZMENYID = helyek.C_INTEZMENYID AND dolgozok.C_TANEVID = helyek.C_TANEVID AND dolgozok.C_OKTATASINEVELESIFELADATTIPUS = helyek.C_OKTATASINEVELESIFELADATTIPUS WHERE 1 = 1 AND i.ID = @pIntezmenyid AND i.TOROLT = 'F' AND t.ID = @pTanevId GROUP BY GROUPING SETS((helyek.C_OKTATASINEVELESIFELADATTIPUS, feladat.C_NAME), ()) END GO