47 lines
No EOL
1.6 KiB
Transact-SQL
47 lines
No EOL
1.6 KiB
Transact-SQL
-- =============================================
|
|
-- Author: Dőrr Tamás
|
|
-- Create date: 2017.02.24.
|
|
-- Description:
|
|
-- =============================================
|
|
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 @Datum BETWEEN C_BELEPESDATUM AND ISNULL(C_KILEPESDATUM, GETDATE())
|
|
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
|
|
,t.C_ORAKEZDETE AS Orakezdete
|
|
FROM [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId) ocs
|
|
INNER JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND ocs.ID = t.C_OSZTALYCSOPORTID AND t.C_DATUM = @Datum AND t.C_ORAKEZDETE <= @OraKezdete
|
|
LEFT JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = t.C_OSZTALYCSOPORTID AND tcs.TOROLT = 'F'
|
|
LEFT JOIN T_TANULOMULASZTAS tm ON tm.TOROLT = 'F' AND tm.C_TANITASIORAKID = t.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 |