kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspSzirStatOktato.sql
2024-03-13 00:33:46 +01:00

122 lines
8 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspSzirStatOktato
GO
CREATE PROCEDURE uspSzirStatOktato
@pTanevId int
,@pIntezmenyid int
AS BEGIN
DECLARE @datum datetime
SELECT @datum = LEFT(tv.C_NEV, 4) + '1001' FROM T_TANEV tv WHERE ID = @pTanevId
SELECT
fh.ID AS TanuloIdAlkalmazottId
,fh.C_NYOMTATASINEV + ' (' + ISNULL(NULLIF(fh.C_OKTATASIAZONOSITO, ''), '-') + ')' AS AlkalmazottOktatasiAzonosito
,ia.C_OMKOD AS IntezmenyOmAzonosito
,ia.C_NEV AS IntezmenyNev
,ia.C_VAROS AS IntezenyTelepules
,ia.C_IRANYITOSZAM AS IntezmenyIrszam
,RTRIM(CONCAT(ia.C_KOZTERULETNEV, ' ', ia.C_KOZTERULETJELLEGENEV,' ', ia.C_HAZSZAM, ' ', ia.C_EMELET, ' ', ia.C_AJTO)) AS IntezmenyCim
,ISNULL(NULLIF(ia.C_EMAILCIM, ''), '-') AS IntezmenyEmailcim
,CONCAT(ia.C_OMKOD, '/', fhely.C_FELADATELLATASIHELYKOD) AS FelhelyAzonosito
,mhely.C_NEV AS FelhelyNev
,mhely.C_VAROS AS FelhelyTelepules
,mhely.C_IRANYITOSZAM AS FelhelyIrszam
,RTRIM(CONCAT(mhely.C_KOZTERULETNEV, ' ', mhely.C_KOZTERULETJELLEGENEV,' ', mhely.C_HAZSZAM, ' ', mhely.C_EMELET, ' ', mhely.C_AJTO)) AS FelhelyCim
,ISNULL(NULLIF(mhely.C_EMAILCIM, ''), '-') AS FelhelyEmailcim
,fhelytip.C_NAME AS FelhelyTipus
,IIF(munkaviszony.ID = 6467, 'Nem', munkaviszony.C_NAME) AS AlkalmazottFoMunkaviszonyu
,IIF(munkaviszony.ID = 6467, '-', nem.C_NAME) AS AlkalmazottNemFoMunkaviszonyu
,IIF(munkaviszony.ID = 6467, '-', CAST(DATEDIFF(YEAR, fh.C_SZULETESIDATUM, @datum) AS nvarchar(3))) AS AlkalmazottKorev
,IIF(munkaviszony.ID = 6467, '-', vezetoi.C_NAME) AS AlkalmazottVezetoiMegbizas
,REPLACE(IIF(munkaviszony.ID = 6467, '-', munkakor.C_NAME), ' (*)', '') AS AlkalmazottMunkakor
,IIF(munkaviszony.ID = 6467, '-', vegzettseg.C_NAME) AS AlkalmazottVegzettseg
,IIF(munkaviszony.ID = 6467, '-', fokozat.C_NAME) AS AlkalmazottFokozat
,IIF(munkaviszony.ID = 6467, '-', ISNULL(targykat.Targykat1, '-')) AS AlkalmazottTargykat1
,IIF(munkaviszony.ID = 6467, '-', ISNULL(targykat.Targykat2, '-')) AS AlkalmazottTargykat2
,IIF(munkaviszony.ID = 6467, '-', ISNULL(targykat.Targykat3, '-')) AS AlkalmazottTargykat3
,IIF(munkaviszony.ID = 6467, '-', ISNULL(tantervijellemzo.C_NAME, '-')) AS AlkalmazottTanterviJellemzo
,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_NYUGDIJAS = 'T', 'Igen', 'Nem')) AS AlkalmazottNyugdijas
,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_TARTOSHELYETTESITES = 'T', 'Igen', 'Nem')) AS AlkalmazottTartosTavollevo
,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_BESOROLASIFOKOZAT = 3044 AND DATEDIFF(YEAR, fh.C_SZULETESIDATUM, '20211001') < 30, 'Igen', 'Nem')) AS AlkalmazottPalyakezdo
,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_ISINTERNETETOKTCELRAHASZNAL = 'T', 'Igen', 'Nem')) AS AlkalmazottInternetetHasznalo
,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_ISINFORMATKEPISMRENDELKEZIK = 'T', 'Igen', 'Nem')) AS AlkalmazottInfroIsmeretek
,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_ISIKTESZKOZOKETLGALABB40HASZ = 'T', 'Igen', 'Nem')) AS AlkalmazottIktEszkoz
,IIF(munkaviszony.ID = 6467, ISNULL(nem.C_NAME, '-'), '-') AS AlkalmazottOraadoNem
,IIF(munkaviszony.ID = 6467, ISNULL(tantervijellemzo.C_NAME, '-'), '-') AS AlkalmazottOraadoTanterviJellemzo
FROM T_FELHASZNALO fh
INNER JOIN T_ALKALMAZOTT a ON a.ID = fh.ID AND a.TOROLT = 'F'
INNER JOIN T_INTEZMENYADATOK ia ON ia.C_TANEVID = fh.C_TANEVID AND ia.TOROLT = 'F'
INNER JOIN T_INTEZMENY i ON ia.C_INTEZMENYID = i.ID AND i.TOROLT = 'F'
INNER JOIN T_FELADATELLATASIHELY fhely ON fhely.C_TANEVID = ia.C_TANEVID AND fhely.TOROLT = 'F'
INNER JOIN T_MUKODESIHELY mhely ON mhely.ID = fhely.C_MUKODESIHELYID AND mhely.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE fhelytip ON fhelytip.ID = fhely.C_OKTATASINEVELESIFELADATTIPUS AND fhelytip.C_TANEVID = fhely.C_TANEVID AND fhelytip.C_INTEZMENYID = i.ID AND fhelytip.TOROLT = 'F'
INNER JOIN T_MUNKAUGYIADATOK ma ON ma.C_ALKALMAZOTTID = fh.ID AND ma.TOROLT = 'F' AND ma.C_FELADATELLATASIHELYID = fhely.ID
INNER JOIN T_MUNKAKORTIPUS mt on mt.ID = ma.C_MUNKAKORTIPUSA AND mt.C_ALTANEVID = ma.C_TANEVID AND mt.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE munkaviszony ON munkaviszony.ID = ma.C_FOGLALKOZTATASTIPUS AND munkaviszony.C_TANEVID = ma.C_TANEVID AND munkaviszony.C_INTEZMENYID = ma.C_INTEZMENYID AND munkaviszony.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE nem ON fh.C_NEME = nem.ID AND nem.C_TANEVID = fh.C_TANEVID AND nem.C_INTEZMENYID = fh.C_INTEZMENYID AND nem.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE munkakor ON munkakor.ID = ma.C_MUNKAKORTIPUSA AND munkakor.C_TANEVID = ma.C_TANEVID AND munkakor.C_INTEZMENYID = ma.C_INTEZMENYID AND munkakor.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE fokozat ON fokozat.ID = ma.C_BESOROLASIFOKOZAT AND fokozat.C_TANEVID = ma.C_TANEVID AND fokozat.C_INTEZMENYID = ma.C_INTEZMENYID AND fokozat.TOROLT = 'F'
OUTER APPLY (
SELECT
pvt.C_TANARID, [1] AS Targykat1, [2] AS Targykat2, [3] AS Targykat3
FROM (
SELECT x.C_TANARID, x.C_NAME, RN
FROM (
SELECT fg.C_TANARID, dib.ID, dib.C_NAME, ROW_NUMBER() OVER(PARTITION BY fg.C_TANARID ORDER BY SUM(fg.C_ORASZAM) DESC, dib.C_NAME ASC) AS RN
FROM T_FOGLALKOZAS fg
INNER JOIN T_TANTARGY tgy ON tgy.ID = fg.C_TANTARGYID AND tgy.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE dib ON tgy.C_TARGYKATEGORIA = dib.ID AND dib.C_TANEVID = tgy.C_TANEVID AND dib.TOROLT = 'F'
WHERE fg.C_TANARID = fh.ID
AND fg.C_TANEVID = @pTanevId
AND fg.TOROLT = 'F'
GROUP BY fg.C_TANARID, dib.ID, dib.C_NAME
) x
WHERE x.RN <= 3
) z PIVOT
( MAX(z.C_NAME)
FOR RN IN ([1], [2], [3])
) AS pvt
) targykat
OUTER APPLY (
SELECT TOP(1) tta.C_TANTERVIJELLEMZOID, tantervijellemzoNev.C_NAME
FROM T_FOGLALKOZAS f
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = f.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT tcsOszt ON tcsOszt.C_TANULOID = tcs.C_TANULOID AND tcsOszt.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocsOszt ON ocsOszt.ID = tcsOszt.C_OSZTALYCSOPORTID AND ocsOszt.C_FELADATKATEGORIAID = ocs.C_FELADATKATEGORIAID AND ocsOszt.TOROLT = 'F'
INNER JOIN T_OSZTALY oOszt ON ocsOszt.ID = oOszt.ID AND oOszt.TOROLT = 'F'
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcsOszt.ID AND tta.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE tantervijellemzoNev ON tantervijellemzoNev.ID = tta.C_TANTERVIJELLEMZOID AND tantervijellemzoNev.C_TANEVID = fh.C_TANEVID AND tantervijellemzoNev.C_INTEZMENYID = tta.C_INTEZMENYID AND tantervijellemzoNev.TOROLT = 'F'
WHERE tcs.C_BELEPESDATUM <= @datum
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @datum)
AND tcsOszt.C_BELEPESDATUM <= @datum
AND (tcsOszt.C_KILEPESDATUM IS NULL OR tcsOszt.C_KILEPESDATUM > @datum)
AND f.C_TANARID = fh.ID
AND ocs.C_FELADATELLATASIHELYID = ma.C_FELADATELLATASIHELYID
AND f.C_TANEVID = @pTanevId
AND f.TOROLT = 'F'
GROUP BY tta.C_TANTERVIJELLEMZOID, tantervijellemzoNev.C_NAME
ORDER BY COUNT(*) DESC, tta.C_TANTERVIJELLEMZOID
) AS tantervijellemzo
OUTER APPLY (
SELECT TOP (1)
vd.C_NAME
FROM T_VEGZETTSEG v
INNER JOIN T_DICTIONARYITEMBASE vd ON vd.ID = v.C_VEGZETTSEGTIPUSID AND vd.C_TANEVID = v.C_TANEVID AND vd.C_INTEZMENYID = v.C_INTEZMENYID AND vd.TOROLT = 'F'
WHERE v.TOROLT = 'F'
AND v.C_TANARID = fh.ID
ORDER BY vd.C_VALUE
) vegzettseg
LEFT JOIN T_DICTIONARYITEMBASE vezetoi ON vezetoi.ID = ma.C_VEZETOIORASZAMOK AND ma.C_TANEVID = vezetoi.C_TANEVID
WHERE fh.TOROLT = 'F'
AND (ma.C_ALKALMAZASMEGSZUNESE >= @datum OR ma.C_ALKALMAZASMEGSZUNESE IS NULL)
AND ISNULL(fh.C_ELOTAG,'') NOT LIKE '[[]%'
AND a.C_ALLANDOHELYETTESITESRE = 'F'
AND mt.C_ALKALMAZOTTMUNKAKORTIPUSID = 8384
AND fh.C_TANEVID = @pTanevId
AND fh.C_INTEZMENYID = @pIntezmenyid
END
GO