init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,171 @@
|
|||
DROP FUNCTION IF EXISTS dbo.fnGetKopcsolodoOsztalyCsoportokByDateRange;
|
||||
GO
|
||||
|
||||
CREATE FUNCTION dbo.fnGetKopcsolodoOsztalyCsoportokByDateRange (
|
||||
@pOsztalyCsoportId int
|
||||
,@pStartDate datetime
|
||||
,@pEndDate datetime
|
||||
,@pIntezmenyId int
|
||||
,@pTanevId int
|
||||
)
|
||||
RETURNS @Result TABLE (
|
||||
Id int primary key NOT NULL
|
||||
,Oka nvarchar(50) NOT NULL
|
||||
,Kezdete datetime NOT NULL
|
||||
,Vege datetime NOT NULL
|
||||
) AS
|
||||
BEGIN
|
||||
DECLARE
|
||||
@tanevStart datetime
|
||||
,@tanevEnd datetime
|
||||
,@osztalyId int
|
||||
|
||||
IF EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES WHERE ID = @pOsztalyCsoportId) BEGIN
|
||||
|
||||
INSERT INTO @Result (Id, Oka, Kezdete, Vege)
|
||||
SELECT
|
||||
o.Id
|
||||
,'OsztalycsoportOraja' AS Oka
|
||||
,@pStartDate
|
||||
,@pEndDate
|
||||
FROM T_OSZTALY_OSSZES o
|
||||
WHERE o.ID = @pOsztalyCsoportId
|
||||
AND o.C_ALTANEVID = @pTanevID
|
||||
AND o.C_ALINTEZMENYID = @pIntezmenyId
|
||||
AND o.TOROLT = 'F'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
cs.ID
|
||||
,'OsztalybontottOra' AS Oka
|
||||
,@pStartDate
|
||||
,@pEndDate
|
||||
FROM T_CSOPORT_OSSZES cs
|
||||
WHERE C_OSZTALYBONTASID = @pOsztalyCsoportId
|
||||
AND cs.TOROLT = 'F'
|
||||
AND cs.C_ALTANEVID = @pTanevID
|
||||
AND cs.C_ALINTEZMENYID = @pIntezmenyId
|
||||
|
||||
INSERT INTO @Result (Id, Oka, Kezdete, Vege)
|
||||
SELECT
|
||||
tcs.C_OSZTALYCSOPORTID AS Id
|
||||
,'TanuloMasOra' AS Oka
|
||||
,CASE
|
||||
WHEN MIN(tcs.C_BELEPESDATUM) > MIN(oszt.C_BELEPESDATUM) AND MIN(tcs.C_BELEPESDATUM) > @pStartDate THEN MIN(tcs.C_BELEPESDATUM)
|
||||
WHEN MIN(oszt.C_BELEPESDATUM) > MIN(tcs.C_BELEPESDATUM) AND MIN(oszt.C_BELEPESDATUM) > @pStartDate THEN MIN(oszt.C_BELEPESDATUM)
|
||||
ELSE @pStartDate
|
||||
END AS Kezdete -- A h<>rom k<>z<EFBFBD>l a legnagyobb
|
||||
,CASE
|
||||
WHEN MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(oszt.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(tcs.C_KILEPESDATUM, @pEndDate))
|
||||
WHEN MAX(ISNULL(oszt.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(oszt.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(oszt.C_KILEPESDATUM, @pEndDate))
|
||||
ELSE @pEndDate -- A h<>rom k<>z<EFBFBD>l a legkisebb
|
||||
END AS Vege
|
||||
FROM T_TANULOCSOPORT_OSSZES tcs
|
||||
INNER JOIN T_TANULOCSOPORT_OSSZES oszt
|
||||
ON oszt.C_TANULOID = tcs.C_TANULOID
|
||||
AND oszt.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
|
||||
AND oszt.C_BELEPESDATUM <= @pEndDate
|
||||
AND (oszt.C_KILEPESDATUM > @pStartDate OR oszt.C_KILEPESDATUM IS NULL)
|
||||
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID AND cs.C_OSZTALYBONTASID IS NULL
|
||||
WHERE tcs.TOROLT = 'F'
|
||||
AND oszt.TOROLT = 'F'
|
||||
AND tcs.C_TANEVID = @pTanevId
|
||||
AND tcs.C_INTEZMENYID = @pIntezmenyId
|
||||
AND tcs.C_BELEPESDATUM <= @pEndDate
|
||||
AND (tcs.C_KILEPESDATUM > @pStartDate OR tcs.C_KILEPESDATUM IS NULL)
|
||||
AND NOT EXISTS (SELECT 1 FROM @Result r WHERE r.ID = tcs.C_OSZTALYCSOPORTID)
|
||||
GROUP BY tcs.C_OSZTALYCSOPORTID
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) BEGIN
|
||||
-- nem bontott csoport
|
||||
|
||||
SELECT @osztalyId = C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId
|
||||
|
||||
INSERT INTO @Result (Id, Oka, Kezdete, Vege)
|
||||
SELECT
|
||||
@osztalyId
|
||||
,'OsztalyOra' AS Oka
|
||||
,@pStartDate
|
||||
,@pEndDate
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
@pOsztalyCsoportId
|
||||
,'OsztalycsoportOraja' AS Oka
|
||||
,@pStartDate
|
||||
,@pEndDate
|
||||
|
||||
|
||||
INSERT INTO @Result (Id, Oka, Kezdete, Vege)
|
||||
SELECT
|
||||
tcs.C_OSZTALYCSOPORTID AS Id
|
||||
,'TanuloMasOra' AS Oka
|
||||
,CASE
|
||||
WHEN MIN(tcs.C_BELEPESDATUM) > MIN(csop.C_BELEPESDATUM) AND MIN(tcs.C_BELEPESDATUM) > @pStartDate THEN MIN(tcs.C_BELEPESDATUM)
|
||||
WHEN MIN(csop.C_BELEPESDATUM) > MIN(tcs.C_BELEPESDATUM) AND MIN(csop.C_BELEPESDATUM) > @pStartDate THEN MIN(csop.C_BELEPESDATUM)
|
||||
ELSE @pStartDate
|
||||
END AS Kezdete -- A h<>rom k<>z<EFBFBD>l a legnagyobb
|
||||
,CASE
|
||||
WHEN MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(tcs.C_KILEPESDATUM, @pEndDate))
|
||||
WHEN MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(csop.C_KILEPESDATUM, @pEndDate))
|
||||
ELSE @pEndDate
|
||||
END AS Vege -- A három közül a legkisebb
|
||||
FROM T_TANULOCSOPORT_OSSZES tcs
|
||||
INNER JOIN T_TANULOCSOPORT_OSSZES csop
|
||||
ON tcs.C_TANULOID = csop.C_TANULOID
|
||||
AND csop.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
|
||||
AND csop.C_BELEPESDATUM <= @pEndDate
|
||||
AND (csop.C_KILEPESDATUM > @pStartDate OR csop.C_KILEPESDATUM IS NULL)
|
||||
AND csop.TOROLT = 'F'
|
||||
INNER JOIN T_CSOPORT_OSSZES cs
|
||||
ON cs.ID = tcs.C_OSZTALYCSOPORTID
|
||||
AND (cs.C_OSZTALYBONTASID IS NULL OR cs.C_OSZTALYBONTASID = @osztalyId)
|
||||
WHERE tcs.C_OSZTALYCSOPORTID <> @pOsztalyCsoportId
|
||||
AND tcs.C_TANEVID = @pTanevId
|
||||
AND tcs.C_INTEZMENYID = @pIntezmenyId
|
||||
AND tcs.C_BELEPESDATUM <= @pEndDate
|
||||
AND (tcs.C_KILEPESDATUM > @pStartDate OR tcs.C_KILEPESDATUM IS NULL)
|
||||
AND tcs.TOROLT = 'F' AND csop.TOROLT = 'F'
|
||||
GROUP BY tcs.C_OSZTALYCSOPORTID
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId AND C_OSZTALYBONTASID IS NULL) BEGIN
|
||||
|
||||
-- bontott csoport
|
||||
INSERT INTO @Result (Id, Oka, Kezdete, Vege)
|
||||
SELECT
|
||||
tcs.C_OSZTALYCSOPORTID AS Id
|
||||
,IIF(tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId, 'OsztalycsoportOraja', 'TanuloMasOra') AS Oka
|
||||
,CASE
|
||||
WHEN MIN(tcs.C_BELEPESDATUM) > MIN(csop.C_BELEPESDATUM) AND MIN(tcs.C_BELEPESDATUM) > @pStartDate THEN MIN(tcs.C_BELEPESDATUM)
|
||||
WHEN MIN(csop.C_BELEPESDATUM) > MIN(tcs.C_BELEPESDATUM) AND MIN(csop.C_BELEPESDATUM) > @pStartDate THEN MIN(csop.C_BELEPESDATUM)
|
||||
ELSE @pStartDate
|
||||
END AS Kezdete -- A h<>rom k<>z<EFBFBD>l a legnagyobb
|
||||
,CASE
|
||||
WHEN MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(tcs.C_KILEPESDATUM, @pEndDate))
|
||||
WHEN MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(csop.C_KILEPESDATUM, @pEndDate))
|
||||
ELSE @pEndDate
|
||||
END AS Vege -- A három közül a legkisebb
|
||||
FROM T_TANULOCSOPORT_OSSZES tcs
|
||||
INNER JOIN T_TANULOCSOPORT_OSSZES csop
|
||||
ON tcs.C_TANULOID = csop.C_TANULOID
|
||||
AND csop.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
|
||||
AND csop.C_BELEPESDATUM <= @pEndDate
|
||||
AND (csop.C_KILEPESDATUM > @pStartDate OR csop.C_KILEPESDATUM IS NULL)
|
||||
AND csop.TOROLT = 'F'
|
||||
AND csop.C_BELEPESDATUM <= ISNULL(tcs.C_KILEPESDATUM, @pEndDate) AND ISNULL(csop.C_KILEPESDATUM, @pEndDate) > tcs.C_BELEPESDATUM
|
||||
WHERE tcs.C_TANEVID = @pTanevId
|
||||
AND tcs.C_INTEZMENYID = @pIntezmenyId
|
||||
AND tcs.C_BELEPESDATUM <= @pEndDate
|
||||
AND (tcs.C_KILEPESDATUM > @pStartDate OR tcs.C_KILEPESDATUM IS NULL)
|
||||
AND tcs.TOROLT = 'F' AND csop.TOROLT = 'F'
|
||||
GROUP BY tcs.C_OSZTALYCSOPORTID
|
||||
END
|
||||
|
||||
|
||||
RETURN
|
||||
END
|
||||
GO
|
Loading…
Add table
Add a link
Reference in a new issue