58 lines
No EOL
2.2 KiB
Transact-SQL
58 lines
No EOL
2.2 KiB
Transact-SQL
-- =============================================
|
|
-- Author: Dőrr Tamás
|
|
-- Create date: 2017.02.24.
|
|
-- Description: Visszaadja, hogy megy diákok hiányoztak az aktuális tanítási óra előtti órájukról
|
|
-- =============================================
|
|
DROP PROCEDURE IF EXISTS sp_GetElozoOranHianyzottTanulok
|
|
GO
|
|
CREATE PROCEDURE [sp_GetElozoOranHianyzottTanulok]
|
|
@OsztalyCsoportId int
|
|
,@Datum datetime
|
|
,@OraKezdete datetime
|
|
,@HianyzasTipus int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
CREATE TABLE #OsztalyTanuloi (TanuloId int)
|
|
|
|
INSERT INTO #OsztalyTanuloi (TanuloId)
|
|
SELECT C_TANULOID
|
|
FROM T_TANULOCSOPORT
|
|
WHERE C_OSZTALYCSOPORTID = @OsztalyCsoportId
|
|
AND C_BELEPESDATUM <= @Datum AND ISNULL(C_KILEPESDATUM, GETDATE()) > @Datum
|
|
AND TOROLT = 'F'
|
|
|
|
CREATE TABLE #Temp (
|
|
TanuloId int
|
|
,Tipus int
|
|
,Orakezdete datetime
|
|
)
|
|
|
|
INSERT INTO #Temp (TanuloId, Tipus, Orakezdete)
|
|
SELECT
|
|
ot.TanuloId as TanuloId
|
|
,tm.C_TIPUS as Tipus
|
|
,tn.C_ORAKEZDETE AS Orakezdete
|
|
FROM (
|
|
SELECT
|
|
tcs2.C_OSZTALYCSOPORTID AS ID
|
|
,tcs2.C_TANULOID
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_TANULOID = tcs.C_TANULOID
|
|
INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = tcs.C_TANEVID AND tanev.TOROLT = 'F'
|
|
WHERE tcs.C_OSZTALYCSOPORTID = @OsztalyCsoportId
|
|
AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tanev.C_UTOLSOTANITASINAP)
|
|
AND tcs2.C_BELEPESDATUM <= GETDATE() AND (tcs2.C_KILEPESDATUM > GETDATE() OR tcs2.C_KILEPESDATUM IS NULL OR tcs2.C_KILEPESDATUM >= tanev.C_UTOLSOTANITASINAP)
|
|
AND tcs.TOROLT = 'F'
|
|
AND tcs2.TOROLT = 'F') ocs
|
|
INNER JOIN T_TANITASIORA tn ON tn.TOROLT = 'F' AND ocs.ID = tn.C_OSZTALYCSOPORTID AND tn.C_DATUM = @Datum AND tn.C_ORAKEZDETE < @OraKezdete
|
|
LEFT JOIN T_TANULOMULASZTAS tm ON tm.TOROLT = 'F' AND tm.C_TANITASIORAKID = tn.ID AND tm.C_TIPUS = @HianyzasTipus AND ocs.C_TANULOID = tm.C_ORATANULOIID
|
|
INNER JOIN #osztalytanuloi ot ON ot.TanuloId = ocs.C_TANULOID
|
|
|
|
SELECT sub.TanuloId
|
|
FROM #OsztalyTanuloi ot
|
|
OUTER APPLY (SELECT TOP(1) * FROM #Temp t WHERE ot.TanuloId = t.TanuloId ORDER BY Orakezdete DESC) sub
|
|
WHERE Tipus = @HianyzasTipus
|
|
|
|
END
|
|
GO |