/* ==================================================================================== */ /* Description: Intézmény szintű lekérdezés adott pTanevId szerint a tanulók névsoráról */ /* ==================================================================================== */ DROP PROCEDURE IF EXISTS uspGetTanulokNevsoraOsszesitoStatisztika GO CREATE PROCEDURE [dbo].[uspGetTanulokNevsoraOsszesitoStatisztika] @pTanevId int AS BEGIN SET NOCOUNT ON; -- Tanév SELECT tv.C_NEV FROM T_TANEV_OSSZES tv WHERE tv.TOROLT = 'F' AND tv.ID = @pTanevId -- Osztaly/Csoport -ok félévvége dátumai DROP TABLE IF EXISTS #ocstr CREATE TABLE #ocstr ( ocsId int ,FelevVegeDatum datetime ) INSERT INTO #ocstr ( ocsId ,FelevVegeDatum ) SELECT o.ID --,ocs.C_NEV ,CASE WHEN otr.C_OSZTALYCSOPORTID IS NOT NULL AND ktr.ID IS NOT NULL THEN ktr.C_DATUM WHEN otr.C_OSZTALYCSOPORTID IS NULL AND ktr0.ID IS NOT NULL THEN ktr0.C_DATUM ELSE tr.C_DATUM END AS FelevVegeDatum FROM T_OSZTALY_OSSZES o INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F' INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_TANEVID = o.C_ALTANEVID AND tr.C_NAPTIPUSA = 1400 AND tr.TOROLT = 'F' LEFT JOIN T_TANEVRENDJE_OSSZES ktr0 ON ktr0.C_TANEVID = o.C_ALTANEVID AND ktr0.C_NAPTIPUSA = 7605 AND ocs.C_KERESZTFELEVES = 'T' AND ktr0.C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND ktr0.TOROLT = 'F' LEFT JOIN T_TANEVRENDJE_OSSZES ktr ON ktr.C_TANEVID = o.C_ALTANEVID AND ktr.C_NAPTIPUSA = 7605 AND ocs.C_KERESZTFELEVES = 'T' AND ktr.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND ktr.TOROLT = 'F' LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE otr ON otr.C_OSZTALYCSOPORTID = o.ID AND otr.C_TANEVRENDJEID = ktr.ID WHERE o.TOROLT = 'F' AND o.C_ALTANEVID = @pTanevId -- I. félév SELECT i.C_AZONOSITO AS Intezmeny ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito ,C_NYOMTATASINEV AS Nev ,ocs.C_NEV AS Osztaly ,tcs.C_BELEPESDATUM AS BelepesDatuma ,tcs.C_KILEPESDATUM AS KilepesDatuma ,ocs.C_KERESZTFELEVES AS KeresztFeleves FROM T_FELHASZNALO_OSSZES fh INNER JOIN T_TANULO_OSSZES t ON t.ID = fh.ID AND t.TOROLT = 'F'   INNER JOIN T_TANEV_OSSZES tv ON tv.ID = fh.C_TANEVID AND tv.TOROLT = 'F'   INNER jOIN T_INTEZMENY_OSSZES i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' -- osztályok, illetve itt a LEFT miatt megjelennek azok, akiknek soha nem volt még osztálya   LEFT JOIN T_TANULOCSOPORT_OSSZES tcs   INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcs.C_OSZTALYCSOPORTID AND o.TOROLT = 'F'   INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F' INNER JOIN #ocstr tr ON tr.ocsId = ocs.ID -- félév ON tcs.C_TANULOID = fh.ID AND tcs.TOROLT = 'F' WHERE fh.TOROLT = 'F' AND fh.C_TANEVID = @pTanevId AND (tcs.ID IS NULL OR tcs.C_BELEPESDATUM <= tr.FelevVegeDatum) ORDER BY Nev, Osztaly, BelepesDatuma -- II. félév SELECT i.C_AZONOSITO AS Intezmeny ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito ,C_NYOMTATASINEV AS Nev ,ocs.C_NEV AS Osztaly ,tcs.C_BELEPESDATUM AS BelepesDatuma ,tcs.C_KILEPESDATUM AS KilepesDatuma ,ocs.C_KERESZTFELEVES AS KeresztFeleves FROM T_FELHASZNALO_OSSZES fh INNER JOIN T_TANULO_OSSZES t ON t.ID = fh.ID AND t.TOROLT = 'F'   INNER JOIN T_TANEV_OSSZES tv ON tv.ID = fh.C_TANEVID AND tv.TOROLT = 'F'   INNER jOIN T_INTEZMENY_OSSZES i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' -- osztályok   INNER JOIN T_TANULOCSOPORT_OSSZES tcs   INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcs.C_OSZTALYCSOPORTID AND o.TOROLT = 'F'   INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F' INNER JOIN #ocstr tr ON tr.ocsId = ocs.ID -- félév ON tcs.C_TANULOID = fh.ID AND tcs.TOROLT = 'F' WHERE fh.TOROLT = 'F' --AND GETDATE() >= tr.FelevVegeDatum AND fh.C_TANEVID = @pTanevId AND ((tcs.C_KILEPESDATUM > tr.FelevVegeDatum AND tcs.C_KILEPESDATUM <= tv.C_UTOLSONAP) OR tcs.C_KILEPESDATUM IS NULL) ORDER BY Nev, Osztaly, BelepesDatuma END GO