kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetTanulokNevsoraOsszesitoStatisztika.sql
2024-03-13 00:33:46 +01:00

93 lines
3.9 KiB
Transact-SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ==================================================================================== */
/* 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