51 lines
No EOL
1.7 KiB
Transact-SQL
51 lines
No EOL
1.7 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 [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId) 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_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND tcs.TOROLT = 'F'
|
|
LEFT JOIN T_TANULOMULASZTAS tm ON tm.TOROLT = 'F' AND tm.C_TANITASIORAKID = tn.ID AND tm.C_TIPUS = @HianyzasTipus AND tcs.C_TANULOID = tm.C_ORATANULOIID
|
|
INNER JOIN #osztalytanuloi ot ON ot.TanuloId = tcs.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 |