kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180523101450_OM_632/uspGetOsztalycsoportTantargyiMulasztasai.sql
2024-03-13 00:33:46 +01:00

178 lines
No EOL
5.1 KiB
Transact-SQL

IF OBJECT_ID('dbo.uspGetOsztalycsoportTantargyiMulasztasai') IS NOT NULL BEGIN
DROP PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
END
GO
CREATE PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
@pOsztalyId int
,@pTantargyId int
,@pTanevid int
,@pIntezmenyId int
,@pCsakMegtartott bit /*0 - nem, 1 - igen */
AS
BEGIN
SET NOCOUNT ON;
DECLARE @createTmpTable bit = 0;
IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
DROP TABLE #OsztalyTanuloi
END
CREATE TABLE #OsztalyTanuloi (
TanuloId int PRIMARY KEY
,Belepes datetime
,Kilepes datetime
--,CONSTRAINT PK_OsztalyTanuloi PRIMARY KEY (TanuloId)
)
INSERT INTO #OsztalyTanuloi (TanuloId/*, Belepes, Kilepes*/)
SELECT DISTINCT C_TANULOID--, C_BELEPESDATUM, ISNULL(C_KILEPESDATUM, '21000101')
FROM T_TANULOCSOPORT_OSSZES
WHERE C_OSZTALYCSOPORTID = @pOsztalyId
AND C_TANEVID = @pTanevId
AND TOROLT = 'F'
IF OBJECT_ID('tempdb..#Result') IS NULL BEGIN
SET @createTmpTable = 1;
CREATE TABLE #Result (
TanuloId int PRIMARY KEY
,Mulasztas int
,MegtartottOra int
,HatralevoOra int
--,CONSTRAINT PK_Result PRIMARY KEY (TanuloId)
)
END
INSERT INTO #Result (
TanuloId
,Mulasztas
,MegtartottOra
,HatralevoOra
) SELECT
ot.TanuloId
,SUM(IIF(C_TIPUS = 1500, 1, 0)) + (SUM(IIF(C_TIPUS = 1499, C_KESESPERCBEN, 0)) / 45) AS Mulasztas
,COUNT(DISTINCT tn.ID) AS MegtartottOra
,NULL AS HatralevoOra
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId
INNER JOIN T_TANITASIORA_OSSZES tn
ON tn.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
AND tn.C_BEJEGYZESIDEJE >= tcs.C_BELEPESDATUM
AND tn.C_BEJEGYZESIDEJE < ISNULL(tcs.C_KILEPESDATUM, '21000101')
LEFT JOIN T_TANULOMULASZTAS_OSSZES tm
ON tm.C_TANITASIORAKID = tn.ID
AND tm.C_ORATANULOIID = ot.TanuloId
AND tm.C_TIPUS BETWEEN 1499 AND 1500
WHERE tn.C_TANTARGYID = @pTantargyId
GROUP BY ot.TanuloId
IF @pCsakMegtartott = 1 BEGIN
IF(@createTmpTable = 1)
BEGIN
SELECT
TanuloId
,Mulasztas
,MegtartottOra
,HatralevoOra
FROM #Result
END
END
ELSE BEGIN
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID INT
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,TanarID int
,HelyettesitesId int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX_TanevRendOsztalyCsoportId CLUSTERED (TanevRendOsztalyCsoportId)
)
DECLARE @idoszakKezdete datetime = GETDATE()
DECLARE @idoszakVege datetime
SELECT @idoszakVege = C_NAPDATUMA
FROM T_NAPTARINAP
WHERE C_NAPTIPUSA = 1395
AND C_TANEVID = @pTanevId
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @idoszakKezdete
,@pIdoszakVege = @idoszakVege
,@pTanarId = NULL
,@pOsztalyCsoportId = @pOsztalyId
,@pTanuloId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = 0
UPDATE r
SET
r.HatralevoOra = ISNULL(o.HatralevoOra, 0)
FROM #Result r
LEFT JOIN (
SELECT
ot.TanuloId, COUNT(1) AS HatralevoOra
FROM T_TANULOCSOPORT tcs
INNER JOIN #OrarendTable oo ON tcs.C_OSZTALYCSOPORTID = oo.TanevRendOsztalyCsoportId
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId AND oo.Datum >= tcs.C_BELEPESDATUM AND oo.Datum < ISNULL(tcs.C_KILEPESDATUM, '21000101')
WHERE oo.TantargyId = @pTantargyId
GROUP BY ot.TanuloId
) o ON o.TanuloId = r.TanuloId
IF(@createTmpTable = 1)
BEGIN
SELECT
TanuloId
,Mulasztas
,MegtartottOra
,HatralevoOra
FROM #Result
END
END
IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
DROP TABLE #OsztalyTanuloi
END
IF OBJECT_ID('tempdb..#OrarendTable') IS NOT NULL BEGIN
DROP TABLE #OrarendTable
END
END
GO