This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,181 @@
-- Elso korben a duplazasok
UPDATE T_TANULOMULASZTAS SET
C_TIPUS = 1817,
C_KESESPERCBEN = NULL
WHERE ID IN (
SELECT
CASE
WHEN t.a_tanoracelu = t.b_tanoracelu AND a_CREATED < b_CREATED THEN b_ID
WHEN t.a_tanoracelu = t.b_tanoracelu AND a_CREATED >= b_CREATED THEN a_ID
WHEN t.a_tanoracelu = 'T' THEN b_ID
WHEN t.b_tanoracelu = 'T' THEN a_ID
END AS IDForUPDATE
FROM (
SELECT
count(1) over(partition by a.ID) AS a_CNT,count(1) over(partition by b.ID) AS b_CNT,
a.tanoracelu AS a_tanoracelu,a.ID AS a_ID, a.C_ORAKEZDETE AS a_C_ORAKEZDETE,a.C_ORAVEGE AS a_C_ORAVEGE, a.CREATED AS a_CREATED,
b.tanoracelu AS b_tanoracelu,b.ID AS b_ID, b.C_ORAKEZDETE AS b_C_ORAKEZDETE,b.C_ORAVEGE AS b_C_ORAVEGE, b.CREATED AS b_CREATED,a.C_ORATANULOIID
FROM (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu, tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA,tao.C_OSZTALYCSOPORTID, tao.C_ORAKEZDETE,tao.C_ORAVEGE,tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
) a
INNER JOIN (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu,tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA ,tao.C_OSZTALYCSOPORTID,tao.C_ORAKEZDETE,tao.C_ORAVEGE, tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
) b ON a.C_DATUM = b.C_DATUM AND a.C_ORAKEZDETE < b.C_ORAVEGE AND a.C_ORAVEGE > b.C_ORAKEZDETE AND a.C_ORATANULOIID = b.C_ORATANULOIID AND a.CREATED < b.CREATED
) t
WHERE a_CNT = 1 AND b_CNT = 1
)
-- a tobbszori duplazodasokra 5szor futatni
DECLARE @TanuloID int, @Datum DATETIME, @megtartandoID int
DECLARE @i int = 0
WHILE @i < 5 BEGIN
DECLARE cur CURSOR LOCAL FOR
SELECT DISTINCT a.C_ORATANULOIID, a.C_DATUM
FROM (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu, tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA,tao.C_OSZTALYCSOPORTID, tao.C_ORAKEZDETE,tao.C_ORAVEGE,tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
) a
INNER JOIN (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu,tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA ,tao.C_OSZTALYCSOPORTID,tao.C_ORAKEZDETE,tao.C_ORAVEGE, tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
) b ON a.C_DATUM = b.C_DATUM
AND a.C_ORAKEZDETE < b.C_ORAVEGE AND a.C_ORAVEGE > b.C_ORAKEZDETE
AND a.C_ORATANULOIID = b.C_ORATANULOIID AND a.CREATED < b.CREATED
OPEN cur;
FETCH NEXT FROM cur INTO @TanuloID, @Datum;
WHILE @@FETCH_STATUS = 0 BEGIN
SET @megtartandoID = NULL
SELECT TOP 1 @megtartandoID = a.ID
FROM (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu, tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA,tao.C_OSZTALYCSOPORTID, tao.C_ORAKEZDETE,tao.C_ORAVEGE,tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
AND tm.C_ORATANULOIID = @TanuloID
AND tao.C_DATUM = @Datum
) a
INNER JOIN (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu,tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA ,tao.C_OSZTALYCSOPORTID,tao.C_ORAKEZDETE,tao.C_ORAVEGE, tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
AND tm.C_ORATANULOIID = @TanuloID
AND tao.C_DATUM = @Datum
) b ON a.C_DATUM = b.C_DATUM AND
a.C_ORAKEZDETE < b.C_ORAVEGE AND a.C_ORAVEGE > b.C_ORAKEZDETE
AND a.C_ORATANULOIID = b.C_ORATANULOIID AND a.CREATED < b.CREATED
ORDER BY a.tanoracelu DESC,a.CREATED
UPDATE T_TANULOMULASZTAS SET
C_TIPUS = 1817,
C_KESESPERCBEN = NULL
WHERE ID IN(
SELECT b.ID
FROM (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu, tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA,tao.C_OSZTALYCSOPORTID, tao.C_ORAKEZDETE,tao.C_ORAVEGE,tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
AND tm.C_ORATANULOIID = @TanuloID
AND tao.C_DATUM = @Datum
AND tm.ID = @megtartandoID
) a
INNER JOIN (
SELECT
IIF(o.ID IS NOT NULL OR cs.C_TIPUSA = 1034 OR cst.C_ISTANORAICELU = 'T','T','F') AS tanoracelu,tm.ID,tm.C_INTEZMENYID,ocs.C_NEV,cs.C_TIPUSA ,tao.C_OSZTALYCSOPORTID,tao.C_ORAKEZDETE,tao.C_ORAVEGE, tao.C_DATUM, tm.C_ORATANULOIID, tao.ID AS taoID, tm.CREATED
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANEV tv ON tv.ID = tm.C_TANEVID AND tv.C_AKTIV = 'T'
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID AND tao.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
LEFT JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'AND cst.C_ALTANEVID = cs.C_ALTANEVID
WHERE tm.TOROLT = 'F'
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tao.C_DATUM > '20180831'
AND C_IGAZOLASTIPUSA IS NULL
AND tm.C_ORATANULOIID = @TanuloID
AND tao.C_DATUM = @Datum
) b ON a.C_DATUM = b.C_DATUM
AND a.C_ORAKEZDETE < b.C_ORAVEGE AND a.C_ORAVEGE > b.C_ORAKEZDETE
AND a.C_ORATANULOIID = b.C_ORATANULOIID AND a.CREATED < b.CREATED
)
FETCH NEXT FROM cur INTO @TanuloID, @Datum;
END;
SET @i+=1
CLOSE cur;
DEALLOCATE cur;
END;

View file

@ -0,0 +1,20 @@
DROP PROCEDURE IF EXISTS dbo.uspTanuloMulasztasParhuzamosOra
GO
CREATE PROCEDURE dbo.uspTanuloMulasztasParhuzamosOra
@pTanoraId int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
AS
BEGIN
DECLARE @hianyzasTipus int=1500
,@kesesTipus int =1499
SELECT
tm.C_ORATANULOIID TanuloId
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANITASIORA tao ON tm.C_TANITASIORAKID = tao.ID
WHERE @pIdoszakKezdete = tao.C_ORAKEZDETE AND @pIdoszakVege = tao.C_ORAVEGE
AND tm.C_TIPUS BETWEEN @kesesTipus AND @hianyzasTipus
AND tao.ID <> @pTanoraid
END
GO