DECLARE @YEAR varchar(4) = '2016'
DECLARE @alk_pvm date
SET @alk_pvm = @YEAR+'-01-01'
DECLARE @lop_pvm date
SET @lop_pvm = @YEAR+'-12-31'
CREATE TABLE #avoimen_oikeudet (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE NONCLUSTERED INDEX IDX_avoopiskelijaid ON #avoimen_oikeudet(opiskelijaid)
CREATE TABLE #tmp_avoimen_oikeudet (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE NONCLUSTERED INDEX IDX_tmp_avoimen_opiskelijaid ON #tmp_avoimen_oikeudet(opiskelijaid)
/* Välitaulu opiskeluoikeuksille */
CREATE TABLE #Tmp_Opiskelijat(
id int NULL,
oid int NULL,
alkupvm date NULL,
loppupvm date NULL,
koodi nvarchar(20) NULL,
OO_Alkamispaivamaara date NULL,
OO_Paattymispaivamaara date NULL
)
/* Välitaulu kaikille muille opiskeluoikeuksille */
CREATE TABLE #Tmp_Kaikki_Opiskelijat(
id int NULL,
oid int NULL,
alkupvm date NULL,
loppupvm date NULL,
koodi nvarchar(20) NULL,
OO_Alkamispaivamaara date NULL,
OO_Paattymispaivamaara date NULL,
opiskelijaAvain varchar(100)
)
/* Kaikki opiskelijat, opiskeluoikeustyypit ('1','2','3','4','5','6','7','8','9') , 1-tila kalenterivuoden sisällä, päättynyt tai alkanut */
INSERT INTO #Tmp_Kaikki_Opiskelijat ( id, oid, alkupvm, loppupvm, koodi, OO_Alkamispaivamaara, OO_Paattymispaivamaara, opiskelijaAvain )
SELECT DISTINCT oo.OpiskelijaID AS id,
oo.id AS oid,
oolt.Alkamispaivamaara AS alkupvm,
ISNULL(oolt.Paattymispaivamaara, '2112-12-21') AS loppupvm,
OOT.koodi,
OO.Alkamispaivamaara,
OO.Paattymispaivamaara,
o.avain
FROM virta.dbo.Opiskeluoikeus oo
JOIN virta.dbo.opiskelija o ON o.id = oo.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi AS OOT ON oo.Op_oikeuden_tyyppiID = oot.id
JOIN virta.dbo.Op_oikeuteen_liittyva_tila AS oolt ON oolt.OpiskeluoikeusID = oo.id
JOIN virta.dbo.Opiskeluoikeuden_tila AS ooti ON oolt.Op_oikeuden_tilaID = ooti.ID
WHERE ISNULL(oolt.Paattymispaivamaara, '2112-12-21') >= @alk_pvm -- kalenterivuosi 1.1 - 31.12.201x
AND oolt.Alkamispaivamaara <= @lop_pvm
AND ooti.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND OOT.koodi IN ('1','2','3','4','5','6','7','8','9')
CREATE NONCLUSTERED INDEX IDX_Tmp_Kaikki_Opiskelijat_id ON #Tmp_Kaikki_Opiskelijat(id)
CREATE NONCLUSTERED INDEX IDX_Tmp_Kaikki_Opiskelijat_oid ON #Tmp_Kaikki_Opiskelijat(oid)
/* Kaikki opiskelijat, opiskeluoikeustyypit (oot.koodi) '13','14','18' , 1-tila kalenterivuoden sisällä, päättynyt tai alkanut */
INSERT INTO #Tmp_Opiskelijat ( id, oid, alkupvm, loppupvm, koodi, OO_Alkamispaivamaara, OO_Paattymispaivamaara )
SELECT oo.OpiskelijaID AS id,
oo.id AS oid,
oolt.Alkamispaivamaara AS alkupvm,
ISNULL(oolt.Paattymispaivamaara, '2112-12-21') AS loppupvm,
OOT.koodi,
OO.Alkamispaivamaara,
OO.Paattymispaivamaara
FROM virta.dbo.Opiskeluoikeus oo
JOIN virta.dbo.Opiskeluoikeuden_tyyppi AS OOT ON oo.Op_oikeuden_tyyppiID = oot.id
JOIN virta.dbo.Op_oikeuteen_liittyva_tila AS oolt ON oolt.OpiskeluoikeusID = oo.id
JOIN virta.dbo.Opiskeluoikeuden_tila AS ooti ON oolt.Op_oikeuden_tilaID = ooti.ID
WHERE ISNULL(oolt.Paattymispaivamaara, '2112-12-21') >= @alk_pvm -- kalenterivuosi 1.1 - 31.12.201x
AND oolt.Alkamispaivamaara <= @lop_pvm
AND ooti.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND OOT.koodi IN ('13','14','18')
CREATE NONCLUSTERED INDEX IDX_Tmp_Opiskelijat_id ON #Tmp_Opiskelijat(id)
CREATE NONCLUSTERED INDEX IDX_Tmp_Opiskelijat_oid ON #Tmp_Opiskelijat(oid)
TRUNCATE TABLE #tmp_avoimen_oikeudet
INSERT INTO #tmp_avoimen_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm, tila_paattymispvm, kk, opiskeluoikeustyyppi )
SELECT DISTINCT H.id
,H.henkilotunnus
,(SELECT s.koodi FROM virta.dbo.sukupuoli S WHERE S.id = H.sukupuoliid) sukupuoli
, o.avain
, oo.avain
, o.id
, oo.id
, oo.alkamispaivamaara
, oo.paattymispaivamaara
,oolt.alkamispaivamaara AS tila_alkpvm
,oolt.paattymispaivamaara AS tila_paattymispvm
, oo.db AS kk
, '13' AS opiskeluoikeustyyppi
FROM virta.dbo.Henkilo H
JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID
JOIN virta.dbo.Opiskeluoikeus OO ON O.id = OO.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID
JOIN Yhteiset.Asetukset.Instanssit Y ON Y.DB = H.DB
JOIN Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi YH ON YH.Organisaatio_koodi = Y.OrganisaatioKoodi
JOIN virta.dbo.Op_oikeuteen_liittyva_tila AS oolt ON oolt.OpiskeluoikeusID = oo.id
JOIN virta.dbo.Opiskeluoikeuden_tila AS ooti ON oolt.Op_oikeuden_tilaID = ooti.ID
WHERE OT.Koodi = '13' /* Avoin kk oikeustyyppi */
AND ISNULL(OO.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OO.Alkamispaivamaara <= @lop_pvm
-- Kalenterivuosi 1.1 - 31.12.201x
AND ISNULL(oolt.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND oolt.Alkamispaivamaara <= @lop_pvm
AND ooti.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND YH.Oppilaitostyyppi_koodi = '42' /* YO */
AND EXISTS ( SELECT *
FROM #Tmp_Opiskelijat T
WHERE T.oid = oo.ID
AND T.koodi = '13' )
TRUNCATE TABLE #avoimen_oikeudet
INSERT INTO #avoimen_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain
,opiskeluOikeusAvain
,opiskelijaid
,opiskeluoikeusid
,alkamispaivamaara,paattymispaivamaara,tila_alkpvm, tila_paattymispvm
, kk, opiskeluoikeustyyppi )
SELECT DISTINCT
TA.henkiloid, TA.hetu,TA.sukupuoli,TA.opiskelijaAvain
, (SELECT TOP 1 AA.opiskeluOikeusAvain FROM #tmp_avoimen_oikeudet AA WHERE AA.opiskelijaid = TA.opiskelijaid ORDER BY AA.tila_alkpvm ) AS opiskeluOikeusAvain
, TA.opiskelijaid
, (SELECT TOP 1 BB.opiskeluoikeusid FROM #tmp_avoimen_oikeudet BB WHERE BB.opiskelijaid = TA.opiskelijaid ORDER BY BB.tila_alkpvm ) AS opiskeluoikeusid
, (SELECT TOP 1 CC.alkamispaivamaara FROM #tmp_avoimen_oikeudet CC WHERE CC.opiskelijaid = TA.opiskelijaid ORDER BY CC.tila_alkpvm ) AS alkamispaivamaara
, (SELECT TOP 1 DD.paattymispaivamaara FROM #tmp_avoimen_oikeudet DD WHERE DD.opiskelijaid = TA.opiskelijaid ORDER BY DD.tila_alkpvm ) AS paattymispaivamaara
, (SELECT TOP 1 EE.tila_alkpvm FROM #tmp_avoimen_oikeudet EE WHERE EE.opiskelijaid = TA.opiskelijaid ORDER BY EE.tila_alkpvm ) AS tila_alkpvm
, (SELECT TOP 1 FF.tila_paattymispvm FROM #tmp_avoimen_oikeudet FF WHERE FF.opiskelijaid = TA.opiskelijaid ORDER BY FF.tila_alkpvm ) AS tila_paattymispvm
, TA.kk
, TA.opiskeluoikeustyyppi
FROM #tmp_avoimen_oikeudet TA
WHERE TA.opiskelijaid NOT IN (SELECT A.opiskelijaid FROM #avoimen_oikeudet A WHERE A.opiskelijaid = TA.opiskelijaid )
ORDER BY TA.opiskelijaid
CREATE TABLE #tmp_tutkinto_oikeudet (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE TABLE #tutkinto_oikeudet (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE NONCLUSTERED INDEX IDX_tutkinto_opiskelijaid ON #tutkinto_oikeudet(opiskelijaid)
CREATE NONCLUSTERED INDEX IDX_tmp_tutkinto_oikeudet_oid ON #tmp_tutkinto_oikeudet(opiskelijaid)
TRUNCATE TABLE #tmp_tutkinto_oikeudet
INSERT INTO #tmp_tutkinto_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk, opiskeluoikeustyyppi )
SELECT DISTINCT H.id
,H.henkilotunnus
,(SELECT s.koodi FROM virta.dbo.sukupuoli S WHERE S.id = H.sukupuoliid) sukupuoli
, o.avain
, oo.avain
, o.id
, oo.id
, oo.alkamispaivamaara
, oo.paattymispaivamaara
,OOT.alkamispaivamaara AS tila_alkpvm
,OOT.paattymispaivamaara AS tila_paattymispvm
, oo.db AS kk
, OT.koodi
FROM virta.dbo.Henkilo H
JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID
JOIN virta.dbo.Opiskeluoikeus OO ON O.id = OO.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID
JOIN Yhteiset.Asetukset.Instanssit Y ON Y.DB = H.DB
JOIN Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi YH ON YH.Organisaatio_koodi = Y.OrganisaatioKoodi
JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OOT.OpiskeluoikeusID = OO.id
JOIN virta.dbo.Opiskeluoikeuden_tila OOTT ON OOTT.id = OOT.Op_oikeuden_tilaID
WHERE OT.koodi IN ('2','4','6','7')
AND o.id IN ( SELECT A.opiskelijaid FROM #avoimen_oikeudet A )
AND o.id NOT IN ( SELECT TT.opiskelijaid FROM #tmp_tutkinto_oikeudet TT ) -- Esiintyä vain kerran
AND ISNULL(OO.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OO.Alkamispaivamaara <= @lop_pvm
-- Kalenterivuosi 1.1 - 31.12.201x
AND ISNULL(OOT.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OOT.Alkamispaivamaara <= @lop_pvm
AND OOTT.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND YH.Oppilaitostyyppi_koodi = '42' /* YO */
AND EXISTS ( SELECT *
FROM #Tmp_Opiskelijat TTO
WHERE TTO.id = o.ID
AND TTO.koodi = '13' )
--
AND NOT EXISTS ( SELECT *
FROM #Tmp_Opiskelijat TTO2
WHERE TTO2.id = o.ID
AND TTO2.koodi = '13'
AND OOT.Alkamispaivamaara > TTO2.OO_Alkamispaivamaara --Tutkinto-oikeus alkanut myöhemmin kuin avoimen, eli Ei-tutkinto-Avo opisk, vaan Avoin opisk
)
AND NOT EXISTS ( SELECT *
FROM #Tmp_Kaikki_Opiskelijat TK
JOIN #Tmp_Opiskelijat TTO3 ON TTO3.id = TK.id
WHERE TK.id = o.ID
AND TTO3.koodi = '13'
AND TK.OO_Paattymispaivamaara < TTO3.OO_Alkamispaivamaara
--Tutkinto-oikeus alkanut myöhemmin kuin avoimen, eli Ei-tutkinto-Avo opisk, vaan Avoin opisk
)
--
--Tutkinto-oikeus loppunut keväällä kesällä ja myöhemmin syksyllä avoin, eli Ei-tutkinto opiskelijoiden joukossa vaan Avointen joukossa
AND NOT EXISTS ( SELECT *
FROM #Tmp_Opiskelijat TTO3
WHERE TTO3.id = o.ID
AND TTO3.koodi = '13'
AND TTO3.id
IN ( SELECT DISTINCT O2.ID
FROM virta.dbo.Henkilo H2
JOIN virta.dbo.Opiskelija O2 ON O2.HenkiloID = H2.ID
JOIN virta.dbo.Opiskeluoikeus OO2 ON OO2.OpiskelijaID = O2.ID
JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT2 ON OO2.ID = OOT2.OpiskeluoikeusID
JOIN virta.dbo.Opiskeluoikeuden_tila OT2 ON OT2.ID = OOT2.Op_oikeuden_tilaID
WHERE
OOT2.Alkamispaivamaara < TTO3.OO_Alkamispaivamaara
AND OOT2.Alkamispaivamaara > @alk_pvm
AND OT2.Koodi IN ( '3', '4', '5' ) /* Opiskeluoikeus päättynyt */
)
)
--
INSERT INTO #tmp_tutkinto_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk, opiskeluoikeustyyppi )
SELECT DISTINCT H.id
,H.henkilotunnus
,(SELECT s.koodi FROM virta.dbo.sukupuoli S WHERE S.id = H.sukupuoliid) sukupuoli
, o.avain
, oo.avain
, o.id
, oo.id
, oo.alkamispaivamaara
, oo.paattymispaivamaara
,OOT.alkamispaivamaara AS tila_alkpvm
,OOT.paattymispaivamaara AS tila_paattymispvm
, oo.db AS kk
, OT.koodi
FROM virta.dbo.Henkilo H
JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID
JOIN virta.dbo.Opiskeluoikeus OO ON O.id = OO.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID
JOIN Yhteiset.Asetukset.Instanssit Y ON Y.DB = H.DB
JOIN Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi YH ON YH.Organisaatio_koodi = Y.OrganisaatioKoodi
JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OOT.OpiskeluoikeusID = OO.id
JOIN virta.dbo.Opiskeluoikeuden_tila OOTT ON OOTT.id = OOT.Op_oikeuden_tilaID
WHERE o.id NOT IN ( SELECT TT.opiskelijaid FROM #tmp_tutkinto_oikeudet TT ) -- Esiintyä vain kerran
AND o.id IN ( SELECT TK.id FROM #Tmp_Kaikki_Opiskelijat TK )
AND OT.koodi IN ('2','4','6','7')
AND ISNULL(OO.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OO.Alkamispaivamaara <= @lop_pvm
-- Kalenterivuosi 1.1 - 31.12.201x
AND ISNULL(OOT.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OOT.Alkamispaivamaara <= @lop_pvm
AND OOTT.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND YH.Oppilaitostyyppi_koodi = '42' /* YO */
AND EXISTS ( SELECT *
FROM #Tmp_Opiskelijat TTO
WHERE TTO.id = o.ID
AND TTO.koodi = '13' )
AND o.id IN ( SELECT TK2.id
FROM #Tmp_Kaikki_Opiskelijat TK2
WHERE TK2.id = o.id
AND TK2.alkupvm < @alk_pvm
AND ( TK2.loppupvm IS NULL OR TK2.loppupvm > @lop_pvm )
)
--
-- Iltalisä
INSERT INTO #tmp_tutkinto_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk, opiskeluoikeustyyppi )
SELECT DISTINCT H.id
,H.henkilotunnus
,(SELECT s.koodi FROM virta.dbo.sukupuoli S WHERE S.id = H.sukupuoliid) sukupuoli
, o.avain
, oo.avain
, o.id
, oo.id
, oo.alkamispaivamaara
, oo.paattymispaivamaara
,OOT.alkamispaivamaara AS tila_alkpvm
,OOT.paattymispaivamaara AS tila_paattymispvm
, oo.db AS kk
, OT.koodi
FROM virta.dbo.Henkilo H
JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID
JOIN virta.dbo.Opiskeluoikeus OO ON O.id = OO.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID
JOIN Yhteiset.Asetukset.Instanssit Y ON Y.DB = H.DB
JOIN Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi YH ON YH.Organisaatio_koodi = Y.OrganisaatioKoodi
JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OOT.OpiskeluoikeusID = OO.id
JOIN virta.dbo.Opiskeluoikeuden_tila OOTT ON OOTT.id = OOT.Op_oikeuden_tilaID
WHERE o.id NOT IN ( SELECT TT.opiskelijaid FROM #tmp_tutkinto_oikeudet TT ) -- Esiintyä vain kerran
AND o.id IN ( SELECT TK.id FROM #Tmp_Kaikki_Opiskelijat TK )
AND OT.koodi IN ('2','4','6','7')
AND ISNULL(OO.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OO.Alkamispaivamaara <= @lop_pvm
-- Kalenterivuosi 1.1 - 31.12.201x
AND ISNULL(OOT.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OOT.Alkamispaivamaara <= @lop_pvm
AND OOTT.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND YH.Oppilaitostyyppi_koodi = '42'
AND EXISTS ( SELECT *
FROM #Tmp_Opiskelijat TTO
WHERE TTO.id = o.ID
AND TTO.koodi = '13' )
AND O.id IN ( SELECT TK2.id
FROM #Tmp_Kaikki_Opiskelijat TK2
WHERE TK2.id = o.ID
AND TK2.koodi = '2'
AND YEAR(TK2.OO_Paattymispaivamaara) = 2016
)
AND O.id IN ( SELECT TK3.id
FROM #Tmp_Kaikki_Opiskelijat TK3
WHERE TK3.id = o.ID
AND TK3.koodi = '4'
AND TK3.OO_Paattymispaivamaara IS NULL
)
-- Iltalisä loppuu
-- Kaikki valmista kerätään tutkinto-oikeudet joilla on avoimen oikeuksia
TRUNCATE TABLE #tutkinto_oikeudet
INSERT INTO #tutkinto_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain
,opiskeluOikeusAvain
,opiskelijaid
,opiskeluoikeusid
,alkamispaivamaara
,paattymispaivamaara
,tila_alkpvm
,tila_paattymispvm
,kk
, opiskeluoikeustyyppi )
SELECT DISTINCT TA.henkiloid
, TA.hetu
, TA.sukupuoli
, TA.opiskelijaAvain
, (SELECT TOP 1 AA.opiskeluOikeusAvain FROM #avoimen_oikeudet AA WHERE AA.opiskelijaid = TA.opiskelijaid AND AA.opiskeluoikeustyyppi = '13' ORDER BY AA.tila_alkpvm, AA.opiskeluoikeustyyppi DESC ) AS opiskeluOikeusAvain
, TA.opiskelijaid
, (SELECT TOP 1 BB.opiskeluoikeusid FROM #avoimen_oikeudet BB WHERE BB.opiskelijaid = TA.opiskelijaid AND BB.opiskeluoikeustyyppi = '13' ORDER BY BB.tila_alkpvm , BB.opiskeluoikeustyyppi DESC ) AS opiskeluoikeusid
, (SELECT TOP 1 CC.alkamispaivamaara FROM #avoimen_oikeudet CC WHERE CC.opiskelijaid = TA.opiskelijaid AND CC.opiskeluoikeustyyppi = '13' ORDER BY CC.tila_alkpvm, CC.opiskeluoikeustyyppi DESC ) AS alkamispaivamaara
, (SELECT TOP 1 DD.paattymispaivamaara FROM #avoimen_oikeudet DD WHERE DD.opiskelijaid = TA.opiskelijaid AND DD.opiskeluoikeustyyppi = '13' ORDER BY DD.tila_alkpvm, DD.opiskeluoikeustyyppi DESC ) AS paattymispaivamaara
, (SELECT TOP 1 EE.tila_alkpvm FROM #avoimen_oikeudet EE WHERE EE.opiskelijaid = TA.opiskelijaid AND EE.opiskeluoikeustyyppi = '13' ORDER BY EE.tila_alkpvm, EE.opiskeluoikeustyyppi DESC ) AS tila_alkpvm
, (SELECT TOP 1 FF.tila_paattymispvm FROM #avoimen_oikeudet FF WHERE FF.opiskelijaid = TA.opiskelijaid AND FF.opiskeluoikeustyyppi = '13' ORDER BY FF.tila_alkpvm, FF.opiskeluoikeustyyppi DESC ) AS tila_paattymispvm
, TA.kk
, (SELECT TOP 1 GG.opiskeluoikeustyyppi FROM #tmp_tutkinto_oikeudet GG WHERE GG.opiskelijaid = TA.opiskelijaid AND GG.opiskeluoikeustyyppi <> '13' ORDER BY GG.tila_alkpvm, GG.opiskeluoikeustyyppi DESC ) AS opiskeluoikeustyyppi
FROM #tmp_tutkinto_oikeudet TA
WHERE TA.opiskelijaid NOT IN (SELECT A.opiskelijaid FROM #tutkinto_oikeudet A WHERE A.opiskelijaid = TA.opiskelijaid )
ORDER BY TA.opiskelijaid
DELETE FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot
INSERT INTO YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot (
kk,
organisaatiokoodi,
vuosi,
hetu,
sukupuoli,
opiskelijaAvain,
opiskeluOikeusAvain,
OOalkamispaivamaara,
OOpaattymispaivamaara,
OOAktivinentila_alkpvm,
OOAktivinentila_paattynytpvm,
opiskeluoikeustyyppi,
opiskelijaid
)
SELECT DISTINCT kk
,(SELECT Y.organisaatiokoodi FROM Yhteiset.Asetukset.Instanssit Y WHERE Y.db = kk) AS organisaatiokoodi
, @YEAR AS vuosi
, hetu
,sukupuoli
,opiskelijaAvain
,opiskeluOikeusAvain
,alkamispaivamaara
,paattymispaivamaara
,tila_alkpvm
,tila_paattymispvm
,'13' + ':' + opiskeluoikeustyyppi AS opiskeluoikeustyyppi
, opiskelijaid
FROM #tutkinto_oikeudet
WHERE opiskelijaid NOT IN (SELECT TV.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot TV )
INSERT INTO YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot (
kk,
organisaatiokoodi,
vuosi,
hetu,
sukupuoli,
opiskelijaAvain,
opiskeluOikeusAvain,
OOalkamispaivamaara,
OOpaattymispaivamaara,
OOAktivinentila_alkpvm,
OOAktivinentila_paattynytpvm,
opiskeluoikeustyyppi,
opiskelijaid
)
SELECT DISTINCT AA.kk
,(SELECT Y.organisaatiokoodi FROM Yhteiset.Asetukset.Instanssit Y WHERE Y.db = kk) AS organisaatiokoodi
, @YEAR AS vuosi
, AA.hetu
,AA.sukupuoli
,AA.opiskelijaAvain
,AA.opiskeluOikeusAvain
,AA.alkamispaivamaara
,AA.paattymispaivamaara
,AA.tila_alkpvm
,AA.tila_paattymispvm
,AA.opiskeluoikeustyyppi
,AA.opiskelijaid
FROM #avoimen_oikeudet AA
WHERE AA.opiskelijaid NOT IN (SELECT T.opiskelijaid FROM #tutkinto_oikeudet T )
AND AA.opiskelijaid NOT IN (SELECT TV.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot TV )
--
CREATE TABLE #erilliset_opettajat (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE TABLE #erilliset_oikeudet (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE TABLE #tmp_erilliset_opettajat (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE TABLE #tmp_erilliset_oikeudet (
henkiloid int,
hetu varchar(12),
sukupuoli char(1),
opiskelijaAvain varchar(100),
opiskeluOikeusAvain varchar(100),
opiskelijaid int,
opiskeluoikeusid int,
alkamispaivamaara date,
paattymispaivamaara date,
tila_alkpvm date,
tila_paattymispvm date,
kk varchar(12),
opiskeluoikeustyyppi char(2)
)
CREATE NONCLUSTERED INDEX IDX_eope_opiskelijaid ON #erilliset_opettajat(opiskelijaid)
CREATE NONCLUSTERED INDEX IDX_eril_opiskelijaid ON #erilliset_oikeudet(opiskelijaid)
CREATE NONCLUSTERED INDEX IDX_tmp_eope_opiskelijaid ON #tmp_erilliset_opettajat(opiskelijaid)
CREATE NONCLUSTERED INDEX IDX_tmp_eril_opiskelijaid ON #tmp_erilliset_oikeudet(opiskelijaid)
TRUNCATE TABLE #tmp_erilliset_opettajat
INSERT INTO #tmp_erilliset_opettajat (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk,opiskeluoikeustyyppi )
SELECT DISTINCT H.id
,H.henkilotunnus
,(SELECT s.koodi FROM virta.dbo.sukupuoli S WHERE S.id = H.sukupuoliid) sukupuoli
, o.avain
, oo.avain
, o.id
, oo.id
, oo.alkamispaivamaara
, oo.paattymispaivamaara
,oolt.alkamispaivamaara AS tila_alkpvm
,oolt.paattymispaivamaara AS tila_paattymispvm
, oo.db AS kk
, '14' AS opiskeluoikeustyyppi
FROM virta.dbo.Henkilo H
JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID
JOIN virta.dbo.Opiskeluoikeus OO ON O.id = OO.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID
JOIN Yhteiset.Asetukset.Instanssit Y ON Y.DB = H.DB
JOIN Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi YH ON YH.Organisaatio_koodi = Y.OrganisaatioKoodi
JOIN virta.dbo.Op_oikeuteen_liittyva_tila AS oolt ON oolt.OpiskeluoikeusID = oo.id
JOIN virta.dbo.Opiskeluoikeuden_tila AS ooti ON oolt.Op_oikeuden_tilaID = ooti.ID
WHERE OT.koodi = '14' -- opettajan pedagogisia opintoja erillisopintoina
AND o.id NOT IN ( SELECT EO.opiskelijaid FROM #tmp_erilliset_opettajat EO ) -- Esiintya vain kerran
AND ISNULL(OO.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OO.Alkamispaivamaara <= @lop_pvm
-- Kalenterivuosi 1.1 - 31.12.201x
AND ISNULL(oolt.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND oolt.Alkamispaivamaara <= @lop_pvm
AND ooti.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND YH.Oppilaitostyyppi_koodi = '42' /* YO */
AND EXISTS ( SELECT *
FROM #Tmp_Opiskelijat T
WHERE T.oid = oo.ID
AND T.koodi = '14' )
AND O.id IN ( SELECT OS.OpiskelijaID
FROM virta.dbo.Opintosuoritus OS
INNER JOIN virta.dbo.Op_suor_liittyva_luokittelu AS OSL ON OSL.opintosuoritusid = OS.id
WHERE OS.db = O.db
AND OSL.db = O.db
AND YEAR(OS.suorituspaivamaara) = CONVERT(int, @YEAR)
AND OSL.Opintosuorituksen_luokitteluID IN ( SELECT L.id FROM virta.dbo.[Op_suor_luokittelu] L WHERE L.koodi = '5' )
)
AND o.id NOT IN ( SELECT TK2.id
FROM #Tmp_Kaikki_Opiskelijat TK2
WHERE TK2.id = o.id
AND TK2.koodi IN ('2','4','6','7','8','9')
AND TK2.alkupvm < '2015-08-01'
AND ( TK2.loppupvm IS NULL OR TK2.loppupvm > '2016-07-31' )
)
AND o.id NOT IN ( SELECT TK2.id
FROM #Tmp_Kaikki_Opiskelijat TK2
WHERE TK2.id = o.id
AND TK2.koodi IN ('2','4','6','7','8','9')
AND TK2.alkupvm BETWEEN OO.Alkamispaivamaara AND ISNULL(OO.Paattymispaivamaara, '2112-12-21')
)
TRUNCATE TABLE #erilliset_opettajat
INSERT INTO #erilliset_opettajat (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk,opiskeluoikeustyyppi )
SELECT DISTINCT
TA.henkiloid, TA.hetu,TA.sukupuoli,TA.opiskelijaAvain
, (SELECT TOP 1 AA.opiskeluOikeusAvain FROM #tmp_erilliset_opettajat AA WHERE AA.opiskelijaid = TA.opiskelijaid ORDER BY AA.tila_alkpvm ) AS opiskeluOikeusAvain
, TA.opiskelijaid
, (SELECT TOP 1 BB.opiskeluoikeusid FROM #tmp_erilliset_opettajat BB WHERE BB.opiskelijaid = TA.opiskelijaid ORDER BY BB.tila_alkpvm ) AS opiskeluoikeusid
, (SELECT TOP 1 CC.alkamispaivamaara FROM #tmp_erilliset_opettajat CC WHERE CC.opiskelijaid = TA.opiskelijaid ORDER BY CC.tila_alkpvm ) AS alkamispaivamaara
, (SELECT TOP 1 DD.paattymispaivamaara FROM #tmp_erilliset_opettajat DD WHERE DD.opiskelijaid = TA.opiskelijaid ORDER BY DD.tila_alkpvm ) AS paattymispaivamaara
, (SELECT TOP 1 EE.tila_alkpvm FROM #tmp_erilliset_opettajat EE WHERE EE.opiskelijaid = TA.opiskelijaid ORDER BY EE.tila_alkpvm ) AS tila_alkpvm
, (SELECT TOP 1 FF.tila_paattymispvm FROM #tmp_erilliset_opettajat FF WHERE FF.opiskelijaid = TA.opiskelijaid ORDER BY FF.tila_alkpvm ) AS tila_paattymispvm
, TA.kk
, TA.opiskeluoikeustyyppi
FROM #tmp_erilliset_opettajat TA
WHERE TA.opiskelijaid NOT IN (SELECT A.opiskelijaid FROM #erilliset_opettajat A WHERE A.opiskelijaid = TA.opiskelijaid )
ORDER BY TA.opiskelijaid
TRUNCATE TABLE #tmp_erilliset_oikeudet
INSERT INTO #tmp_erilliset_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk,opiskeluoikeustyyppi )
SELECT DISTINCT H.id
,H.henkilotunnus
,(SELECT s.koodi FROM virta.dbo.sukupuoli S WHERE S.id = H.sukupuoliid) sukupuoli
, o.avain
, oo.avain
, o.id
, oo.id
, oo.alkamispaivamaara
, oo.paattymispaivamaara
,oolt.alkamispaivamaara AS tila_alkpvm
,oolt.paattymispaivamaara AS tila_paattymispvm
, oo.db AS kk
, '18' AS opiskeluoikeustyyppi
FROM virta.dbo.Henkilo H
JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID
JOIN virta.dbo.Opiskeluoikeus OO ON O.id = OO.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID
JOIN Yhteiset.Asetukset.Instanssit Y ON Y.DB = H.DB
JOIN Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi YH ON YH.Organisaatio_koodi = Y.OrganisaatioKoodi
JOIN virta.dbo.Op_oikeuteen_liittyva_tila AS oolt ON oolt.OpiskeluoikeusID = oo.id
JOIN virta.dbo.Opiskeluoikeuden_tila AS ooti ON oolt.Op_oikeuden_tilaID = ooti.ID
WHERE OT.koodi = '18' -- erillinen opiskeluoikeus
AND EXISTS ( SELECT *
FROM #Tmp_Opiskelijat T
WHERE T.id = o.ID
AND T.koodi = '18' )
AND o.id NOT IN ( SELECT EO.opiskelijaid FROM #erilliset_oikeudet EO ) -- Esiintya vain kerran
AND o.id NOT IN ( SELECT EOPE.opiskelijaid FROM #erilliset_opettajat EOPE )
AND ISNULL(OO.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OO.Alkamispaivamaara <= @lop_pvm
-- Kalenterivuosi 1.1 - 31.12.201x
AND ISNULL(oolt.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND oolt.Alkamispaivamaara <= @lop_pvm
AND ooti.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND YH.Oppilaitostyyppi_koodi = '42' /* YO */
AND O.id IN ( SELECT OS.OpiskelijaID
FROM virta.dbo.Opintosuoritus OS
INNER JOIN virta.dbo.Op_suor_liittyva_luokittelu AS OSL ON OSL.opintosuoritusid = OS.id
WHERE OS.db = O.db
AND OSL.db = O.db
AND YEAR(OS.suorituspaivamaara) = CONVERT(int, @YEAR)
AND OSL.Opintosuorituksen_luokitteluID IN ( SELECT L.id FROM virta.dbo.[Op_suor_luokittelu] L WHERE L.koodi = '4' )
)
AND o.id NOT IN ( SELECT TK2.id
FROM #Tmp_Kaikki_Opiskelijat TK2
WHERE TK2.id = o.id
AND TK2.koodi IN ('2','4','6','7','9')
AND TK2.alkupvm < '2015-08-01'
AND ( TK2.loppupvm IS NULL OR TK2.loppupvm > '2016-07-31' )
)
AND o.id NOT IN ( SELECT TK2.id
FROM #Tmp_Kaikki_Opiskelijat TK2
WHERE TK2.id = o.id
AND TK2.koodi IN ('2','4','6','7','9')
AND TK2.alkupvm BETWEEN OO.Alkamispaivamaara AND ISNULL(OO.Paattymispaivamaara, '2112-12-21')
)
--
INSERT INTO #tmp_erilliset_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk,opiskeluoikeustyyppi )
SELECT DISTINCT H.id
,H.henkilotunnus
,(SELECT s.koodi FROM virta.dbo.sukupuoli S WHERE S.id = H.sukupuoliid) sukupuoli
, o.avain
, oo.avain
, o.id
, oo.id
, oo.alkamispaivamaara
, oo.paattymispaivamaara
,oolt.alkamispaivamaara AS tila_alkpvm
,oolt.paattymispaivamaara AS tila_paattymispvm
, oo.db AS kk
, '18' AS opiskeluoikeustyyppi
FROM virta.dbo.Henkilo H
JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID
JOIN virta.dbo.Opiskeluoikeus OO ON O.id = OO.OpiskelijaID
JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID
JOIN Yhteiset.Asetukset.Instanssit Y ON Y.DB = H.DB
JOIN Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi YH ON YH.Organisaatio_koodi = Y.OrganisaatioKoodi
JOIN virta.dbo.Op_oikeuteen_liittyva_tila AS oolt ON oolt.OpiskeluoikeusID = oo.id
JOIN virta.dbo.Opiskeluoikeuden_tila AS ooti ON oolt.Op_oikeuden_tilaID = ooti.ID
WHERE OT.koodi = '18' -- erillinen opiskeluoikeus
AND EXISTS ( SELECT *
FROM #Tmp_Opiskelijat T
WHERE T.id = o.ID
AND T.koodi = '18' )
AND o.id NOT IN ( SELECT EO.opiskelijaid FROM #erilliset_oikeudet EO ) -- Esiintya vain kerran
AND o.id NOT IN ( SELECT EOPE.opiskelijaid FROM #erilliset_opettajat EOPE )
AND ISNULL(OO.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND OO.Alkamispaivamaara <= @lop_pvm
-- Kalenterivuosi 1.1 - 31.12.201x
AND ISNULL(oolt.Paattymispaivamaara, '2112-12-21') >= @alk_pvm
AND oolt.Alkamispaivamaara <= @lop_pvm
AND ooti.koodi = 1 -- opiskeluoikeuden tila aktiivinen
AND YH.Oppilaitostyyppi_koodi = '42' /* YO */
AND O.id IN ( SELECT OS.OpiskelijaID
FROM virta.dbo.Opintosuoritus OS
INNER JOIN virta.dbo.Op_suor_liittyva_luokittelu AS OSL ON OSL.opintosuoritusid = OS.id
WHERE OS.db = O.db
AND OSL.db = O.db
AND YEAR(OS.suorituspaivamaara) = CONVERT(int, @YEAR)
AND OSL.Opintosuorituksen_luokitteluID IN ( SELECT L.id FROM virta.dbo.[Op_suor_luokittelu] L WHERE L.koodi = '4' )
)
AND o.id IN ( SELECT TK2.id
FROM #Tmp_Kaikki_Opiskelijat TK2
WHERE TK2.id = o.id
AND TK2.koodi IN ('2','4','6','7','9')
AND TK2.alkupvm >= '2016-08-01'
AND oo.alkamispaivamaara < TK2.alkupvm
)
--
TRUNCATE TABLE #erilliset_oikeudet
INSERT INTO #erilliset_oikeudet (henkiloid, hetu,sukupuoli,opiskelijaAvain,opiskeluOikeusAvain,opiskelijaid,opiskeluoikeusid,alkamispaivamaara,paattymispaivamaara,tila_alkpvm,tila_paattymispvm,kk,opiskeluoikeustyyppi )
SELECT DISTINCT
TA.henkiloid, TA.hetu,TA.sukupuoli,TA.opiskelijaAvain
, (SELECT TOP 1 AA.opiskeluOikeusAvain FROM #tmp_erilliset_oikeudet AA WHERE AA.opiskelijaid = TA.opiskelijaid ORDER BY AA.tila_alkpvm ) AS opiskeluOikeusAvain
, TA.opiskelijaid
, (SELECT TOP 1 BB.opiskeluoikeusid FROM #tmp_erilliset_oikeudet BB WHERE BB.opiskelijaid = TA.opiskelijaid ORDER BY BB.tila_alkpvm ) AS opiskeluoikeusid
, (SELECT TOP 1 CC.alkamispaivamaara FROM #tmp_erilliset_oikeudet CC WHERE CC.opiskelijaid = TA.opiskelijaid ORDER BY CC.tila_alkpvm ) AS alkamispaivamaara
, (SELECT TOP 1 DD.paattymispaivamaara FROM #tmp_erilliset_oikeudet DD WHERE DD.opiskelijaid = TA.opiskelijaid ORDER BY DD.tila_alkpvm ) AS paattymispaivamaara
, (SELECT TOP 1 EE.tila_alkpvm FROM #tmp_erilliset_oikeudet EE WHERE EE.opiskelijaid = TA.opiskelijaid ORDER BY EE.tila_alkpvm ) AS tila_alkpvm
, (SELECT TOP 1 FF.tila_paattymispvm FROM #tmp_erilliset_oikeudet FF WHERE FF.opiskelijaid = TA.opiskelijaid ORDER BY FF.tila_alkpvm ) AS tila_paattymispvm
, TA.kk
, TA.opiskeluoikeustyyppi
FROM #tmp_erilliset_oikeudet TA
WHERE TA.opiskelijaid NOT IN (SELECT A.opiskelijaid FROM #erilliset_oikeudet A WHERE A.opiskelijaid = TA.opiskelijaid AND A.opiskeluoikeustyyppi = '18' )
ORDER BY TA.opiskelijaid
INSERT INTO YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot (
kk,
organisaatiokoodi,
vuosi,
hetu,
sukupuoli,
opiskelijaAvain,
opiskeluOikeusAvain,
OOalkamispaivamaara,
OOpaattymispaivamaara,
OOAktivinentila_alkpvm,
OOAktivinentila_paattynytpvm,
opiskeluoikeustyyppi,
opiskelijaid
)
SELECT DISTINCT EO.kk
,(SELECT Y.organisaatiokoodi FROM Yhteiset.Asetukset.Instanssit Y WHERE Y.db = EO.kk) AS organisaatiokoodi
, @YEAR AS vuosi
, EO.hetu
,EO.sukupuoli
,EO.opiskelijaAvain
,EO.opiskeluOikeusAvain
,EO.alkamispaivamaara
,EO.paattymispaivamaara
,EO.tila_alkpvm
,EO.tila_paattymispvm
,EO.opiskeluoikeustyyppi
,EO.opiskelijaid
FROM #erilliset_oikeudet EO
WHERE EO.opiskelijaid NOT IN (SELECT TV.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot TV WHERE TV.opiskelijaid = EO.opiskelijaid AND TV.opiskeluoikeustyyppi = '18')
INSERT INTO YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot (
kk,
organisaatiokoodi,
vuosi,
hetu,
sukupuoli,
opiskelijaAvain,
opiskeluOikeusAvain,
OOalkamispaivamaara,
OOpaattymispaivamaara,
OOAktivinentila_alkpvm,
OOAktivinentila_paattynytpvm,
opiskeluoikeustyyppi,
opiskelijaid
)
SELECT DISTINCT EOpe.kk
,(SELECT Y.organisaatiokoodi FROM Yhteiset.Asetukset.Instanssit Y WHERE Y.db = EOpe.kk) AS organisaatiokoodi
, @YEAR AS vuosi
, EOpe.hetu
,EOpe.sukupuoli
,EOpe.opiskelijaAvain
,EOpe.opiskeluOikeusAvain
,EOpe.alkamispaivamaara
,EOpe.paattymispaivamaara
,EOpe.tila_alkpvm
,EOpe.tila_paattymispvm
,EOpe.opiskeluoikeustyyppi
,EOpe.opiskelijaid
FROM #erilliset_opettajat EOpe
WHERE EOpe.opiskelijaid NOT IN (SELECT TV.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot TV WHERE TV.opiskelijaid = EOpe.opiskelijaid AND TV.opiskeluoikeustyyppi = '14')
CREATE TABLE #eri_oik (
kk varchar(12),
lkm int
)
CREATE TABLE #eri_ope (
kk varchar(12),
lkm int
)
INSERT INTO #eri_oik (kk, lkm)
SELECT kk, count(*) AS lkm
FROM #erilliset_oikeudet
WHERE opiskelijaid IN (SELECT Tark.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot Tark WHERE Tark.opiskeluoikeustyyppi = '18')
GROUP BY kk
INSERT INTO #eri_ope (kk, lkm)
SELECT kk, count(*) AS lkm
FROM #erilliset_opettajat
WHERE opiskelijaid IN (SELECT Tark.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot Tark WHERE Tark.opiskeluoikeustyyppi = '14')
GROUP BY kk
CREATE TABLE #YO6_Avoin_Erilliset (
kk varchar(12),
organisaatiokoodi varchar(5),
vuosi int DEFAULT 2016,
Avo_tutkinto_miehet int DEFAULT 0,
Avo_tutkinto_naiset int DEFAULT 0,
Avo_miehet int DEFAULT 0,
Avo_naiset int DEFAULT 0,
Erilliset_Oikeudet int DEFAULT 0,
Erilliset_Opettajat int DEFAULT 0
)
INSERT INTO #YO6_Avoin_Erilliset (kk, organisaatiokoodi)
SELECT DISTINCT db AS kk, organisaatiokoodi
FROM Yhteiset.Asetukset.Instanssit
WHERE db IN ('AA','AYO','HY','ISY','JY','LAY','LTY','OY','SHH','TAIY','TaY','TTY','TY','VY')
CREATE TABLE #AvoTutkinto_miehet (
kk varchar(12),
Avo_tutkinto_miehet int
)
CREATE TABLE #AvoTutkinto_naiset (
kk varchar(12),
Avo_tutkinto_naiset int
)
CREATE TABLE #Avo_miehet (
kk varchar(12),
Avo_miehet int
)
CREATE TABLE #Avo_naiset (
kk varchar(12),
Avo_naiset int
)
INSERT INTO #AvoTutkinto_miehet (kk,Avo_tutkinto_miehet)
SELECT T.kk, count(*) As miehia
FROM #tutkinto_oikeudet T
WHERE T.sukupuoli = 1
AND T.opiskelijaid IN (SELECT Tark.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot Tark WHERE Tark.opiskeluoikeustyyppi LIKE '13:%')
GROUP BY T.kk
INSERT INTO #AvoTutkinto_naiset (kk,Avo_tutkinto_naiset)
SELECT TT.kk, count(*) AS naisia
FROM #tutkinto_oikeudet TT
WHERE TT.sukupuoli = 2
AND TT.opiskelijaid IN (SELECT Tark.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot Tark WHERE Tark.opiskeluoikeustyyppi LIKE '13:%')
GROUP BY TT.kk
INSERT INTO #Avo_miehet (kk,Avo_miehet)
SELECT AA.kk, count(*) As miehia
FROM #avoimen_oikeudet AA
WHERE AA.henkiloid NOT IN (SELECT T.henkiloid FROM #tutkinto_oikeudet T )
AND AA.sukupuoli = 1
AND AA.opiskelijaid IN (SELECT Tark.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot Tark WHERE Tark.opiskeluoikeustyyppi = '13')
GROUP BY AA.kk
INSERT INTO #Avo_naiset (kk,Avo_naiset)
SELECT A.kk, count(*) As naisia
FROM #avoimen_oikeudet A
WHERE A.henkiloid NOT IN (SELECT T.henkiloid FROM #tutkinto_oikeudet T )
AND A.sukupuoli = 2
AND A.opiskelijaid IN (SELECT Tark.opiskelijaid FROM YO6_Avoimet_Erillset_Opiskelijat_TarkistusTiedot Tark WHERE Tark.opiskeluoikeustyyppi = '13')
GROUP BY A.kk
UPDATE U
SET U.Avo_tutkinto_miehet = M.Avo_tutkinto_miehet
FROM #YO6_Avoin_Erilliset U
JOIN #AvoTutkinto_miehet M ON M.kk = U.kk
UPDATE U
SET U.Avo_tutkinto_naiset = M.Avo_tutkinto_naiset
FROM #YO6_Avoin_Erilliset U
JOIN #AvoTutkinto_naiset M ON M.kk = U.kk
UPDATE U
SET U.Avo_miehet = M.Avo_miehet
FROM #YO6_Avoin_Erilliset U
JOIN #Avo_miehet M ON M.kk = U.kk
UPDATE U
SET U.Avo_naiset = M.Avo_naiset
FROM #YO6_Avoin_Erilliset U
JOIN #Avo_naiset M ON M.kk = U.kk
UPDATE U
SET U.Erilliset_Oikeudet = M.lkm
FROM #YO6_Avoin_Erilliset U
JOIN #eri_oik M ON M.kk = U.kk
UPDATE U
SET U.Erilliset_Opettajat = M.lkm
FROM #YO6_Avoin_Erilliset U
JOIN #eri_ope M ON M.kk = U.kk
DELETE FROM YO6_Avoimet_Erilliset_Summataulukko
INSERT INTO YO6_Avoimet_Erilliset_Summataulukko (
kk,
organisaatiokoodi,
vuosi,
Avo_tutkinto_miehet,
Avo_tutkinto_naiset,
Avo_miehet,
Avo_naiset,
Erilliset_Oikeudet,
Erilliset_Opettajat
)
SELECT kk,
organisaatiokoodi,
vuosi,
Avo_tutkinto_miehet,
Avo_tutkinto_naiset,
Avo_miehet,
Avo_naiset,
Erilliset_Oikeudet,
Erilliset_Opettajat
FROM #YO6_Avoin_Erilliset
ORDER BY kk
DROP TABLE #Tmp_Opiskelijat
DROP TABLE #Tmp_Kaikki_Opiskelijat
DROP TABLE #tmp_avoimen_oikeudet
DROP TABLE #avoimen_oikeudet
DROP TABLE #tmp_tutkinto_oikeudet
DROP TABLE #tutkinto_oikeudet
DROP TABLE #YO6_Avoin_Erilliset
DROP TABLE #AvoTutkinto_miehet
DROP TABLE #AvoTutkinto_naiset
DROP TABLE #Avo_miehet
DROP TABLE #Avo_naiset
DROP TABLE #tmp_erilliset_opettajat
DROP TABLE #erilliset_opettajat
DROP TABLE #tmp_erilliset_oikeudet
DROP TABLE #erilliset_oikeudet
DROP TABLE #eri_oik
DROP TABLE #eri_ope