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

102 lines
No EOL
3.4 KiB
Transact-SQL

-- =============================================
-- Author: Zsiga Attila
-- Create date: 2016.04.22.
-- Description: Tanévrendi események szerinti csengetési rendek
-- =============================================
DROP PROCEDURE IF EXISTS [dbo].[sp_GetTanevRendjeCsengetesiRend]
GO
CREATE PROCEDURE [dbo].[sp_GetTanevRendjeCsengetesiRend]
@pKezdoDatum DATETIME,
@pVegDatum DATETIME,
@pOsztalyCsoportID INT
AS
BEGIN
SET NOCOUNT ON;
SELECT
Datum,
CsengetesiRendID,
LastChangedMax
INTO
#tmpMindenOsztalyraVonatkozo
FROM
(
SELECT
TANEVRENDJE.C_DATUM Datum,
MAX(LASTCHANGED) LastChangedMax
FROM
(SELECT * FROM T_TANEVRENDJE WHERE T_TANEVRENDJE.TOROLT = 'F' AND T_TANEVRENDJE.C_DATUM BETWEEN @pKezdoDatum AND @pVegDatum AND T_TANEVRENDJE.C_OSSZESCSOPORTRAVONATKOZIK = 'T') TANEVRENDJE
GROUP BY
TANEVRENDJE.C_DATUM
) MindenOsztalyra
LEFT JOIN (SELECT C_CSENGETESIRENDID CsengetesiRendID, C_DATUM, LASTCHANGED FROM T_TANEVRENDJE WHERE T_TANEVRENDJE.TOROLT = 'F' AND T_TANEVRENDJE.C_DATUM BETWEEN @pKezdoDatum AND @pVegDatum AND T_TANEVRENDJE.C_OSSZESCSOPORTRAVONATKOZIK = 'T') TANEVRENDJE ON TANEVRENDJE.C_DATUM = MindenOsztalyra.Datum AND TANEVRENDJE.LASTCHANGED = MindenOsztalyra.LastChangedMax
CREATE TABLE #tmpAdottOsztalyraVonatkozo
(
Datum DATETIME,
CsengetesiRendID INT,
LastChangedMax DATETIME
)
IF @pOsztalyCsoportID IS NULL
BEGIN
INSERT INTO #tmpAdottOsztalyraVonatkozo
SELECT
NULL Datum,
NULL CsengetesiRendID,
NULL LastChangedMax
FROM
(SELECT NULL Datum, NULL CsengetesiRendID FROM T_TANEVRENDJE WHERE 1=2) AdottOsztalyra
END
ELSE
BEGIN
INSERT INTO #tmpAdottOsztalyraVonatkozo
SELECT
Datum,
CsengetesiRendID,
LastChangedMax
FROM
(
SELECT
TANEVRENDJE.C_DATUM Datum,
MAX(LASTCHANGED) LastChangedMax
FROM
(SELECT * FROM T_TANEVRENDJE WHERE T_TANEVRENDJE.TOROLT = 'F' AND T_TANEVRENDJE.C_DATUM BETWEEN @pKezdoDatum AND @pVegDatum AND T_TANEVRENDJE.C_OSSZESCSOPORTRAVONATKOZIK = 'F') TANEVRENDJE
INNER JOIN
(SELECT * FROM T_OSZTALYCSOPORT_TANEVRENDJE WHERE C_OSZTALYCSOPORTID = @pOsztalyCsoportID) OSZTALYCSOPORT_TANEVRENDJE ON OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID = TANEVRENDJE.ID
GROUP BY
TANEVRENDJE.C_DATUM
) AdottOsztalyra
LEFT JOIN (SELECT C_CSENGETESIRENDID CsengetesiRendID, C_DATUM, LASTCHANGED FROM T_TANEVRENDJE WHERE T_TANEVRENDJE.TOROLT = 'F' AND T_TANEVRENDJE.C_DATUM BETWEEN @pKezdoDatum AND @pVegDatum AND T_TANEVRENDJE.C_OSSZESCSOPORTRAVONATKOZIK = 'F') TANEVRENDJE ON TANEVRENDJE.C_DATUM = AdottOsztalyra.Datum AND TANEVRENDJE.LASTCHANGED = AdottOsztalyra.LastChangedMax
END
SELECT
CASE
WHEN
AdottOsztalyraVonatkozo.CsengetesiRendID IS NOT NULL
THEN
AdottOsztalyraVonatkozo.Datum
ELSE
MindenOsztalyraVonatkozo.Datum
END Datum,
CASE
WHEN
AdottOsztalyraVonatkozo.CsengetesiRendID IS NOT NULL
THEN
AdottOsztalyraVonatkozo.CsengetesiRendID
ELSE
MindenOsztalyraVonatkozo.CsengetesiRendID
END CsengetesiRendID
FROM
#tmpMindenOsztalyraVonatkozo AS MindenOsztalyraVonatkozo
FULL OUTER JOIN
#tmpAdottOsztalyraVonatkozo
AS AdottOsztalyraVonatkozo ON
AdottOsztalyraVonatkozo.Datum = MindenOsztalyraVonatkozo.Datum
DROP TABLE #tmpMindenOsztalyraVonatkozo
DROP TABLE #tmpAdottOsztalyraVonatkozo
END
GO