kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170327110702_Init/Stored procedures/sp_GetUzenofuzetErtekelolap.sql
2024-03-13 00:33:46 +01:00

243 lines
No EOL
9.3 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetUzenofuzetErtekelolap]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetUzenofuzetErtekelolap]
END
GO
-- =============================================
-- Author: <Kelemen Attila>
-- Create date: <2016. 01. 06.>
-- Description: <Tanulók jegyei havi bontásban>
-- =============================================
CREATE PROCEDURE [sp_GetUzenofuzetErtekelolap]
@osztalyId int,
@TanevId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--Intézmény, tanév
SELECT T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve,
T_INTEZMENYADATOK_OSSZES.C_IRANYITOSZAM IntezmenyIranyitoszam,
T_INTEZMENYADATOK_OSSZES.C_VAROS IntezmenyVaros,
T_INTEZMENYADATOK_OSSZES.C_CIME IntezmenyCime,
T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM TELEFON,
T_INTEZMENYADATOK_OSSZES.C_EMAILCIM EMAILCIM,
T_INTEZMENYADATOK_OSSZES.C_OMKOD IntezmenyOMKod,
T_INTEZMENYADATOK_OSSZES.C_IGAZGATONEVE Intezmenyvezeto,
(SELECT C_OSZTALYFONOKID FROM T_OSZTALY_OSSZES WHERE T_OSZTALY_OSSZES.ID = @osztalyId and T_OSZTALY_OSSZES.C_ALTANEVID = @TanevId and T_OSZTALY_OSSZES.TOROLT = 'F') PartnerID,
T_TANEV_OSSZES.C_NEV TANEV
FROM T_INTEZMENYADATOK_OSSZES
inner join T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID and T_TANEV_OSSZES.C_INTEZMENYID = T_INTEZMENYADATOK_OSSZES.C_INTEZMENYID and T_TANEV_OSSZES.TOROLT = 'F'
WHERE T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
and T_TANEV_OSSZES.ID = @TanevId
--Osztály, évfolyam
select T_OSZTALYCSOPORT_OSSZES.C_NEV,
T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Osztalyfonok
from T_OSZTALYCSOPORT_OSSZES
inner join T_OSZTALY_OSSZES on t_osztalycsoport_OSSZES.id = T_OSZTALY_OSSZES.ID
inner join T_FELHASZNALO_OSSZES on t_felhasznalo_OSSZES.id = t_osztaly_OSSZES.c_osztalyfonokid
where T_OSZTALYCSOPORT_OSSZES.TOROLT='F'
AND T_OSZTALYCSOPORT_OSSZES.ID=@osztalyId
and T_OSZTALYCSOPORT_OSSZES.C_TANEVID = @TanevId
--Tanuló adatai
SELECT DISTINCT T_FELHASZNALO_OSSZES.ID TANULOID,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV TANULONEV,
T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO OKTATASIAZONOSITO
FROM T_FELHASZNALO_OSSZES
JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID
WHERE T_FELHASZNALO_OSSZES.TOROLT='F'
AND TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
and T_FELHASZNALO_OSSZES.C_TANEVID = @TanevId
ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
--Jegyek
select * INTO #Jegyek from (
-------------------------
--ÉVKÖZI JEGYEK
-------------------------
select distinct
--T_TANULOERTEKELES_OSSZES.ID,
T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
T_TANTARGY_OSSZES.ID Tantargy,
T_DICTIONARYITEMBASE_OSSZES.C_VALUE Osztalyzat,
cast(MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) as nvarchar) Honap
from
T_TANULOERTEKELES_OSSZES
inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
-- inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
WHERE --T_TANULOERTEKELES.C_ERTEKELESTIPUSA = 1518 AND
T_TANULOERTEKELES_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
-- AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
AND T_TANTARGY_OSSZES.TOROLT='F'
AND MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) != 1
AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
union all
-------------------------
--JANUÁRI JEGYEK
-------------------------
select distinct
-- T_TANULOERTEKELES_OSSZES.ID,
T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
T_TANTARGY_OSSZES.ID Tantargy,
T_DICTIONARYITEMBASE_OSSZES.C_VALUE Osztalyzat,
case when (day(t_tanuloertekeles_OSSZES.c_ertekelesdatum) < 15) then
'1/I'
else '1/II'
end Honap
from
T_TANULOERTEKELES_OSSZES
inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
-- inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
WHERE
--T_TANULOERTEKELES.C_ERTEKELESTIPUSA = 1518 AND
T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
-- AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
AND T_TANTARGY_OSSZES.TOROLT='F'
AND MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) = 1
AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
union all
-------------------------
--FÉLÉVI JEGYEK
-------------------------
select distinct
--T_TANULOERTEKELES_OSSZES.ID,
T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
T_TANTARGY_OSSZES.ID Tantargy,
T_DICTIONARYITEMBASE_OSSZES.C_VALUE Osztalyzat,
'I' Honap
from
T_TANULOERTEKELES_OSSZES
inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
-- inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
WHERE T_TANULOERTEKELES_OSSZES.C_ERTEKELESTIPUSA = 1519
AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
AND T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
-- AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
AND T_TANTARGY_OSSZES.TOROLT='F'
and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
union all
-------------------------
--ÉVVÉGI JEGYEK
-------------------------
select distinct
--T_TANULOERTEKELES_OSSZES.ID,
T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
T_TANTARGY_OSSZES.ID Tantargy,
T_TANULOERTEKELES_OSSZES.C_OSZTALYZAT,
'II' Honap
from
T_TANULOERTEKELES_OSSZES
inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
-- inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
WHERE T_TANULOERTEKELES_OSSZES.C_ERTEKELESTIPUSA = 1520
AND MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) != 1
AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
AND T_TANULOCSOPORT_OSSZES.TOROLT='F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
-- AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
AND T_TANTARGY_OSSZES.TOROLT='F'
and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
) tabla
ALTER TABLE #Jegyek
ADD ID INT IDENTITY(1,1)
DECLARE @ID INT = 0
DECLARE @TanuloID INT
DECLARE @Tantargy INT
DECLARE @Osztalyzat INT
DECLARE @Honap VARCHAR(5)
CREATE TABLE #Temp (TanuloID int, Tantargy INT, Osztalyzat VARCHAR(30), Honap Varchar(5))
WHILE (1 = 1)
BEGIN
SELECT TOP 1 @ID = Jegyek.ID, @TanuloID = Jegyek.TanuloID, @Tantargy = Jegyek.Tantargy, @Osztalyzat = Jegyek.Osztalyzat, @Honap=Jegyek.Honap FROM #Jegyek Jegyek WHERE ID > @ID ORDER BY ID
IF @@ROWCOUNT = 0
BEGIN
BREAK;
END
--PRINT @ID
IF ((SELECT COUNT(*) FROM #Temp Temp WHERE Temp.TanuloID=@TanuloID AND Temp.Tantargy = @Tantargy AND Temp.Honap = @Honap)=0)
BEGIN
--PRINT 'INSERT'
INSERT INTO #Temp (TanuloID, Tantargy, Osztalyzat, Honap) VALUES (@TanuloID, @Tantargy, CAST(@Osztalyzat as varchar), @Honap)
END
ELSE
BEGIN
--PRINT 'UPDATE'
UPDATE #Temp SET #Temp.Osztalyzat = CAST(#Temp.Osztalyzat as varchar) + ', '+CAST(@Osztalyzat as varchar)
WHERE #Temp.TanuloID=@TanuloID AND #Temp.Tantargy = @Tantargy AND #Temp.Honap = @Honap
END
END
SELECT
* FROM
(
select TanuloID, C_NEV, Honap,Osztalyzat from
#Temp Temp
inner join T_TANTARGY_OSSZES ON Temp.Tantargy = T_TANTARGY_OSSZES.ID
) TempWithNAMES
pivot (MAX(Osztalyzat) FOR Honap IN ([1/I], [1/II],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12], [I], [II])) PivotTable
DROP TABLE #Jegyek
DROP TABLE #Temp
END
GO