243 lines
No EOL
9.3 KiB
Transact-SQL
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 |