kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170327110702_Init/Stored procedures/sp_GetElozoOranHianyzottTanulok.sql
2024-03-13 00:33:46 +01:00

74 lines
2.3 KiB
Transact-SQL

-- =============================================
-- Author: Dőrr Tamás
-- Create date: 2017.02.24.
-- Description:
-- =============================================
IF OBJECT_ID('sp_GetElozoOranHianyzottTanulok') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetElozoOranHianyzottTanulok
END
GO
CREATE PROCEDURE [sp_GetElozoOranHianyzottTanulok]
@OsztalyCsoportId int,
@Datum datetime,
@OraKezdete datetime,
@HianyzasTipus int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tempOsztalyCsoportok TABLE (OsztalyCsoportID int PRIMARY KEY)
DECLARE @tempTanulok TABLE (TanuloID int PRIMARY KEY)
DECLARE @resultTanuloK TABLE (TanuloID int)
INSERT INTO @tempOsztalyCsoportok (OsztalyCsoportID)
SELECT DISTINCT ID FROM [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId)
INSERT INTO @tempTanuloK (TanuloID)
SELECT DISTINCT
C_ORATANULOIID
FROM T_TANULOMULASZTAS tm
JOIN T_TANITASIORA t ON t.ID = tm.C_TANITASIORAKID AND t.C_DATUM = @datum AND tm.C_TIPUS = @HianyzasTipus AND t.TOROLT = 'F'
WHERE tm.TOROLT = 'F' AND tm.C_ORATANULOIID IN (
SELECT
tcs.C_TANULOID
FROM T_TANULOCSOPORT tcs
WHERE
tcs.C_OSZTALYCSOPORTID IN (select OsztalyCsoportID from @tempOsztalyCsoportok)
AND tcs.TOROLT = 'F'
AND @datum BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM, GETDATE())
)
DECLARE @TanuloId int
DECLARE MY_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT DISTINCT TanuloID FROM @tempTanuloK
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @TanuloId
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @resultTanuloK (TanuloID)
SELECT TOP 1
tm.C_ORATANULOIID
FROM T_TANITASIORA t
LEFT JOIN T_TANULOMULASZTAS tm ON tm.C_TANITASIORAKID = t.ID AND tm.C_ORATANULOIID = @TanuloId AND tm.TOROLT = 'F' AND tm.C_TIPUS = @HianyzasTipus
WHERE
t.TOROLT = 'F'
AND t.C_ORAKEZDETE <= @OraKezdete
AND t.ID IN (SELECT
t.ID
FROM T_TANITASIORA t
WHERE
t.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportID FROM @tempOsztalyCsoportok) AND C_DATUM = @datum)
ORDER BY
t.C_ORAKEZDETE DESC
FETCH NEXT FROM MY_CURSOR INTO @TanuloId
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
SELECT TanuloID FROM @resultTanuloK WHERE TanuloID IS NOT NULL
END