74 lines
2.3 KiB
Transact-SQL
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
|