102 lines
No EOL
3.4 KiB
Transact-SQL
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 |