- Created by Unknown User (eojala@csc.fi), last updated by Karoliina Sipovaara on Jul 30, 2021 50 minute read
Opiskelijatiedot
CSC on toimittanut huhtikuusta 2017 lähtien Virta-tietovarannosta opiskelutiedot kuukausittain Kelalle. Korkeakoulut tarkistavat VIRTA-aineiston ennen sen siirtämistä Kelaan Tiedonsiirrot tehdään Kelan ilmoittaman aikataulun mukaisesti. Kuukausiseurannan tietojen VIRTA-aineisto muodostuu kerran vuorokaudessa siten, että ammattikorkeakoulun aineiston ajo käynnistyy illalla klo 22.00 ja yliopistojen aineiston ajo tämän jälkeen klo 01.00. Aineistossa on mukana korkeakoulun vuorokautta aiemmin toimittamat tiedot.
Poimintaskriptejä ja -ehtojen kuvauksia päivitetään sitä mukaan jos korjauksia tulee. Ammattikorkeakouluilla ja yliopistoilla on hieman erillaiset tiedot.
Korkeakouluja pyydetään tarkistamaan omat tiedostot jotka muodostuvat päivittäin omaan Virta tiedonsiirron SFTP-hakemistoon (kela-hakemisto).
Läsnäolotiedoissa (L-koodin tiedot) on huomioitu nämä eri mahdolliset kombinaatiot. Vähintään yksi lukukausi-tieto lukuvuodessa täytyy löytyä joko läsnä tai poissaolotieto.
LL | Läsnä | Läsnä |
PP | Poissa | Poissa |
LP | Läsnä | Poissa |
PL | Poissa | Läsnä |
_L | tieto puuttuu | Läsnä |
_P | tieto puuttuu | Poissa |
L_ | Läsnä | tieto puuttuu |
P_ | Poissa | tieto puuttuu |
Ammattikorkeakouluopiskelijat haetaan opiskeluoikeuden perusteella, aktiivinen (läsnä/poissa). Jos useampi oikeus niin on kaksi tai useampi rivi.
Yliopistoopiskelijat aktiivinen (läsnä/poissa) ensisijaisuuden mukaan + koodit poimintaehtojen ja eri päättelyiden mukaan.
Opiskelutiedon poiminnat AMK
Valmistuneet AMK-tutkinnot (Tapahtumakoodi W)
DECLARE @YEAR varchar(4) = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' CREATE TABLE #Aloittanut ( oid int, Alkamispaivamaara date, Paattymispaivamaara date ) INSERT INTO #Aloittanut (oid, Alkamispaivamaara, Paattymispaivamaara) SELECT oo.ID ,l.Alkamispaivamaara ,l.Paattymispaivamaara FROM dbo.Henkilo H JOIN dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN dbo.Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID JOIN dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi = 1 /* Läsnä */ CREATE TABLE #Min_aloituspvm ( oid int, alk_pvm date ) INSERT INTO #Min_aloituspvm (oid, alk_pvm) SELECT oid, MIN(alkamispaivamaara) As alk_pvm FROM #Aloittanut GROUP BY oid CREATE TABLE #KELA_paattynyt ( oid int, tila_koodi int, Alkamispaivamaara date ) INSERT INTO #KELA_paattynyt (oid,tila_koodi,Alkamispaivamaara) SELECT OO.ID AS oID , OT.Koodi AS tila_koodi , OOT.Alkamispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara >= @Syys_alk AND OT.Koodi = 3 /* Päättynyt */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'W' AS Tapahtumakoodi ,REPLACE((CONVERT(varchar(12), OS.Suorituspaivamaara, 105)),'-','') AS Paivamaara ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS valmistunut_tutkinto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi ,FLOOR(OO.Laajuus) AS tutkinnon_laajuus ,REPLACE((CONVERT(varchar(12), M.alk_pvm, 105)),'-','') AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Opintosuoritus OS ON OS.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID LEFT JOIN #Min_aloituspvm M ON M.oid = OO.ID WHERE OO.ID IN (SELECT oid AS ID FROM #KELA_paattynyt) AND OT.Koodi IN (1,3,12,14,15) AND OS.Opintosuorituksen_lajiID = 1 AND OS.Suorituspaivamaara >= @Syys_alk DROP TABLE #KELA_paattynyt DROP TABLE #Aloittanut DROP TABLE #Min_aloituspvm
Valmistuneet AMK - Ei tutkintoon johtava koulutus (E)
/* Versio 1 Opiskeluoikeuden tila päättynyt (3) alkamispvm = päättymispäivämäärä */ DECLARE @YEAR varchar(4) = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' CREATE TABLE #Aloittanut ( oid int, Alkamispaivamaara date, Paattymispaivamaara date ) INSERT INTO #Aloittanut (oid, Alkamispaivamaara, Paattymispaivamaara) SELECT oo.ID ,l.Alkamispaivamaara ,l.Paattymispaivamaara FROM dbo.Henkilo H JOIN dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN dbo.Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID JOIN dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOT ON OO.Op_oikeuden_tyyppiID = OOT.id WHERE LT.Koodi = 1 /* Läsnä */ AND OOT.Koodi IN (12,14,15) CREATE TABLE #Min_aloituspvm ( oid int, alk_pvm date ) INSERT INTO #Min_aloituspvm (oid, alk_pvm) SELECT oid, MIN(alkamispaivamaara) As alk_pvm FROM #Aloittanut GROUP BY oid CREATE TABLE #KELA_paattynyt ( oid int, tila_koodi int, Alkamispaivamaara date ) INSERT INTO #KELA_paattynyt (oid,tila_koodi,Alkamispaivamaara) SELECT OO.ID AS oID , OT.Koodi AS tila_koodi , OOT.Alkamispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOTyyp ON OO.Op_oikeuden_tyyppiID = OOTyyp.id WHERE OOT.Alkamispaivamaara >= @Syys_alk AND OT.Koodi = 3 /* Päättynyt */ AND OOTyyp.koodi IN (12,14,15) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'W' AS Tapahtumakoodi ,REPLACE((CONVERT(varchar(12), KP.Alkamispaivamaara, 105)),'-','') AS Paivamaara ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS valmistunut_tutkinto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi ,FLOOR(OO.Laajuus) AS tutkinnon_laajuus ,REPLACE((CONVERT(varchar(12), M.alk_pvm, 105)),'-','') AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Opintosuoritus OS ON OS.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID LEFT JOIN #Min_aloituspvm M ON M.oid = OO.ID LEFT JOIN #KELA_paattynyt KP ON KP.oid = OO.ID WHERE OO.ID IN (SELECT oid AS ID FROM #KELA_paattynyt) AND OT.Koodi IN (12,14,15) DROP TABLE #KELA_paattynyt DROP TABLE #Aloittanut DROP TABLE #Min_aloituspvm /* Versio 2 Opiskeluoikeuden tila päättynyt (3) aktiivisen (1) tilan päättymispäivämäärä = valmistumispäivämäärä */ DECLARE @YEAR varchar(4) = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+''-08-01'' CREATE TABLE #Aloittanut ( oid int, Alkamispaivamaara date, Paattymispaivamaara date ) INSERT INTO #Aloittanut (oid, Alkamispaivamaara, Paattymispaivamaara) SELECT oo.ID ,l.Alkamispaivamaara ,l.Paattymispaivamaara FROM dbo.Henkilo H JOIN dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN dbo.Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID JOIN dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOT ON OO.Op_oikeuden_tyyppiID = OOT.id WHERE LT.Koodi = 1 /* Läsnä */ AND OOT.Koodi IN (12,14,15) /* Jos ei läsnäolo ilmoituksia */ INSERT INTO #Aloittanut (oid, Alkamispaivamaara, Paattymispaivamaara) SELECT oo.ID ,oo.Alkamispaivamaara ,oo.Paattymispaivamaara FROM dbo.Henkilo H JOIN dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOT ON OO.Op_oikeuden_tyyppiID = OOT.id WHERE OO.id NOT IN (SELECT OpiskeluoikeusID AS id FROM dbo.Lukukausi_ilmoittautuminen) AND OOT.Koodi IN (12,14,15) AND OO.Paattymispaivamaara >= @Syys_alk CREATE TABLE #Min_aloituspvm ( oid int, alk_pvm date ) INSERT INTO #Min_aloituspvm (oid, alk_pvm) SELECT oid, MIN(alkamispaivamaara) As alk_pvm FROM #Aloittanut GROUP BY oid CREATE TABLE #KELA_paattynyt ( oid int, tila_koodi int, Alkamispaivamaara date ) INSERT INTO #KELA_paattynyt (oid,tila_koodi,Alkamispaivamaara) SELECT OO.ID AS oID , OT.Koodi AS tila_koodi , max(OOT.Paattymispaivamaara) AS Alkamispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOTyyp ON OO.Op_oikeuden_tyyppiID = OOTyyp.id WHERE (OOT.Paattymispaivamaara >= @Syys_alk) AND OT.Koodi = 1 /* Aktiivinen */ AND OOTyyp.koodi IN (12,14,15) AND OO.ID IN ( SELECT DISTINCT OO.ID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara>= @Syys_alk AND OT.Koodi = 3 /* Valmistunut */ AND LEN(LTRIM(H.Henkilotunnus))>7 ) GROUP BY OO.ID, OT.Koodi SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,''L''+ORG.Koodi AS siirtotunnus ,''T'' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),''-'','''') AS poimintapaivamaara ,''OPISK'' AS siirtolaji ,''OP'' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN ''T'' WHEN OT.Koodi = 3 THEN ''H'' WHEN OT.Koodi IN (12,14,15) THEN ''E'' END AS opinnot_johon_hyvaksytty ,''W'' AS Tapahtumakoodi ,REPLACE((CONVERT(varchar(12), KP.Alkamispaivamaara, 105)),''-'','''') AS Paivamaara ,CASE WHEN OT.Koodi = 1 THEN ''T'' WHEN OT.Koodi = 3 THEN ''H'' WHEN OT.Koodi IN (12,14,15) THEN ''E'' END AS valmistunut_tutkinto , '' '' AS syyslukukausi , '' '' AS kevatlukukausi ,FLOOR(OO.Laajuus) AS tutkinnon_laajuus ,REPLACE((CONVERT(varchar(12), M.alk_pvm, 105)),''-'','''') AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN ''M'' WHEN H.SukupuoliID = 2 THEN ''N'' END AS Sukupuoli , '' '' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Opintosuoritus OS ON OS.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID LEFT JOIN #Min_aloituspvm M ON M.oid = OO.ID LEFT JOIN #KELA_paattynyt KP ON KP.oid = OO.ID WHERE OO.ID IN (SELECT oid AS ID FROM #KELA_paattynyt) AND OT.Koodi IN (12,14,15) DROP TABLE #KELA_paattynyt DROP TABLE #Aloittanut DROP TABLE #Min_aloituspvm
Läsnä- ja poissaolevat AMK (Tapahtumakoodi L)
Jos opiskelijalla on useampi opiskeluoikeus muodostuu hänelle tiedostoon kaksi tai useampi rivi, mahdollisesti eri läsnäolotiedolla, eli voi olla saman aikaisesti läsnä ja poissa.
DECLARE @YEAR varchar(4) = '2015' DECLARE @plus_vuosi varchar(4) SET @plus_vuosi = convert(int,@YEAR) + 1 DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' DECLARE @Syys_lop date SET @Syys_lop = @YEAR+'-12-31' DECLARE @Kevat_alk date SET @Kevat_alk = @plus_vuosi + '-01-01' DECLARE @Kevat_lop date SET @Kevat_lop = @plus_vuosi + '-07-31' DECLARE @Paivamaara varchar(8) SET @Paivamaara = '0108'+@YEAR /* Jos on uudestaan aktiivinen ja ollut päättyneessä tilassa */ CREATE TABLE #reactivated ( oid int ) INSERT INTO #reactivated (oid) SELECT DISTINCT OO.ID AS oid FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara >= @Syys_alk AND OT.Koodi IN ( 3, 4, 5 ) /* Päättynyt jotenkin */ AND OO.ID IN ( SELECT DISTINCT OO.ID AS oID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Paattymispaivamaara > GETDATE() AND OT.Koodi = 1 /* Taas aktiivinen */ AND LEN(LTRIM(H.Henkilotunnus))>7 ) CREATE TABLE #KELA_aktiivinen ( oid int, tila_koodi int ) INSERT INTO #KELA_aktiivinen (oid,tila_koodi) SELECT DISTINCT OO.ID AS oID , OT.Koodi AS tila_koodi FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE (OOT.Paattymispaivamaara > @Syys_alk OR OOT.Paattymispaivamaara IS NULL) AND OT.Koodi = 1 /* Aktiivinen */ AND LEN(LTRIM(H.Henkilotunnus))>7 AND OO.ID NOT IN ( SELECT DISTINCT OO.ID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara >= @Syys_alk AND OT.Koodi IN ( 3, 4, 5) /* Päättynyt jotenkin */ AND OO.ID NOT IN ( SELECT oid AS id FROM #reactivated ) /* Uudestaan aktiivi */ ) CREATE TABLE #KELA_lasnaolo ( oid int, tila_koodi int, lukukausi char, Alkamispaivamaara date, Paattymispaivamaara date ) /* Syksy Läsnä L */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID , LT.Koodi AS tila_koodi , 'S' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE L.Alkamispaivamaara >= @Syys_alk AND L.Paattymispaivamaara <= @Syys_lop AND LT.Koodi = 1 /* Läsnä */ AND LEN(LTRIM(H.Henkilotunnus))>7 /* Syksy Poissa P */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID , LT.Koodi AS tila_koodi , 'S' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE L.Alkamispaivamaara >= @Syys_alk AND L.Paattymispaivamaara <= @Syys_lop AND LT.Koodi IN (2,3) /* Poissa */ AND LEN(LTRIM(H.Henkilotunnus))>7 /* Kevat Läsnä L */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID , LT.Koodi AS tila_koodi , 'K' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE L.Alkamispaivamaara >= @Kevat_alk AND L.Paattymispaivamaara <= @Kevat_lop AND LT.Koodi = 1 /* Läsnä */ AND LEN(LTRIM(H.Henkilotunnus))>7 /* Kevat Poissa P */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID , LT.Koodi AS tila_koodi , 'K' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE L.Alkamispaivamaara >= @Kevat_alk AND L.Paattymispaivamaara <= @Kevat_lop AND LT.Koodi IN (2,3) /* Poissa */ AND LEN(LTRIM(H.Henkilotunnus))>7 /* LL */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'L' AS syyslukukausi , 'L' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'S') AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 /* PP */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'P' AS syyslukukausi , 'P' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'S') AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 /* L */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara /* ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS valmistunut_tutkinto */ , ' ' AS valmistunut_tutkinto , 'L' AS syyslukukausi , ' ' AS kevatlukukausi -- Kevät puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'S') AND OO.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 /* P */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'P' AS syyslukukausi , ' ' AS kevatlukukausi -- Kevät puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'S') AND OO.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 /* LP */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'L' AS syyslukukausi , 'P' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'S') AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 /* PL */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'P' AS syyslukukausi , 'L' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'S') AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 /* _L */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara /* ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS valmistunut_tutkinto */ , ' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , 'L' AS kevatlukukausi -- syys puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'S') AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 /* _P */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OT.Koodi = 1 THEN 'T' WHEN OT.Koodi = 3 THEN 'H' WHEN OT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , 'P' AS kevatlukukausi -- Syys puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OT.Koodi IN (1,3,12,14,15) AND OO.ID IN (SELECT oid AS ID FROM #KELA_aktiivinen) AND OO.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'S') AND OO.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))>7 DROP TABLE #KELA_lasnaolo DROP TABLE #KELA_aktiivinen DROP TABLE #reactivated
Keskeyttäneet AMK (Tapahtumakoodi K - K)
Jos opiskelijalla on aktiivinen voimassa oleva opiskeluoikeus (tapahtumakoodi L) keskeyttämistietoa ei poimita.
/* Versio 1. niille korkeakouluille joiden päättymispäivämäärä on opiskelutilan päättynyt (5) alkamispäivämäärä */ /* Katso alempana versio 2. poiminta korkeakouluille joiden päättymistpäivämäärä on viimeinen aktiivinen (1) päivä */ DECLARE @YEAR varchar(4) = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' /* Jos on vielä aktivinen vaikka on keskeytys merkintä */ CREATE TABLE #KELA_viela_aktiivinen ( oid int, tila_koodi int ) INSERT INTO #KELA_viela_aktiivinen (oid,tila_koodi) SELECT DISTINCT O.ID AS oID , OT.Koodi AS tila_koodi FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOOT ON OO.Op_oikeuden_tyyppiID = OOOT.id WHERE (OOT.Paattymispaivamaara > GETDATE() OR OOT.Paattymispaivamaara IS NULL ) AND OT.Koodi = 1 /* Aktiivinen */ AND LEN(LTRIM(H.Henkilotunnus))>7 AND OOOT.Koodi NOT IN (9,13,17,18) /* ei avoimen, vaihto, valmentava, erillinen */ /* Opiskelujen päättymispaiva */ CREATE TABLE #KELA_paattynyt ( oid int, tila_koodi int, Alkamispaivamaara date ) INSERT INTO #KELA_paattynyt (oid,tila_koodi,Alkamispaivamaara) SELECT OO.ID AS oID , OT.Koodi AS tila_koodi , OOT.Alkamispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara >= @Syys_alk AND OT.Koodi = 5 /* Luopunut */ SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,H.Henkilotunnus AS henkilotunnus ,H.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OTT.Koodi = 1 THEN 'T' WHEN OTT.Koodi = 3 THEN 'H' WHEN OTT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'K' AS Tapahtumakoodi /* Viimeinen aktiivinen on päättymispäivä */ ,REPLACE((CONVERT(varchar(12), KP.Alkamispaivamaara, 105)),'-','') AS Paivamaara ,' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi ,' ' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , 'K' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H JOIN Opiskelija O ON O.HenkiloID = H.ID JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN #KELA_paattynyt KP ON KP.oid = OO.ID JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID JOIN Opiskeluoikeuden_tyyppi OTT ON OTT.ID = OO.Op_oikeuden_tyyppiID WHERE O.ID NOT IN (SELECT oid AS ID FROM #KELA_viela_aktiivinen) AND OTT.Koodi IN (1,3,12,14,15) AND OT.Koodi = 5 /* Luopunut */ AND OOT.Alkamispaivamaara >= @Syys_alk AND LEN(LTRIM(H.Henkilotunnus))>7 DROP TABLE #KELA_viela_aktiivinen DROP TABLE #KELA_paattynyt /* Versio 2. Opiskeluoikeuden viimeinen aktiivinen päivä on päättymispäivä */ DECLARE @YEAR varchar(4) = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' /* Jos on vielä aktivinen vaikka on keskeytys merkintä */ CREATE TABLE #KELA_viela_aktiivinen ( oid int, tila_koodi int ) INSERT INTO #KELA_viela_aktiivinen (oid,tila_koodi) SELECT DISTINCT O.ID AS oID , OT.Koodi AS tila_koodi FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOOT ON OO.Op_oikeuden_tyyppiID = OOOT.id WHERE (OOT.Paattymispaivamaara > GETDATE() OR OOT.Paattymispaivamaara IS NULL ) AND OT.Koodi = 1 /* Aktiivinen */ AND LEN(LTRIM(H.Henkilotunnus))>7 AND OOOT.Koodi NOT IN (9,13,17,18) /* ei avoimen, vaihto, valmentava, erillinen */ /* Opiskelujen viimeinen aktiivinen päivä on päättymispaiva */ CREATE TABLE #KELA_paattynyt ( oid int, tila_koodi int, Alkamispaivamaara date ) INSERT INTO #KELA_paattynyt (oid,tila_koodi,Alkamispaivamaara) SELECT OO.ID AS oID , OT.Koodi AS tila_koodi , max(OOT.Paattymispaivamaara) AS Alkamispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Paattymispaivamaara >= @Syys_alk AND OT.Koodi = 1 /* Aktiivinen */ AND OO.ID IN ( SELECT DISTINCT OO.ID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara>= @Syys_alk AND OT.Koodi = 5 /* Luopunut */ AND LEN(LTRIM(H.Henkilotunnus))>7 ) GROUP BY OO.ID, OT.Koodi SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,H.Henkilotunnus AS henkilotunnus ,H.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OTT.Koodi = 1 THEN 'T' WHEN OTT.Koodi = 3 THEN 'H' WHEN OTT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'K' AS Tapahtumakoodi /* Viimeinen aktiivinen on päättymispäivä */ ,REPLACE((CONVERT(varchar(12), KP.Alkamispaivamaara, 105)),'-','') AS Paivamaara ,' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi ,' ' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , 'K' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H JOIN Opiskelija O ON O.HenkiloID = H.ID JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN #KELA_paattynyt KP ON KP.oid = OO.ID JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID JOIN Opiskeluoikeuden_tyyppi OTT ON OTT.ID = OO.Op_oikeuden_tyyppiID WHERE O.ID NOT IN (SELECT oid AS ID FROM #KELA_viela_aktiivinen) AND OTT.Koodi IN (1,3,12,14,15) AND OT.Koodi = 5 /* Luopunut */ AND OOT.Alkamispaivamaara >= @Syys_alk AND LEN(LTRIM(H.Henkilotunnus))>7 DROP TABLE #KELA_viela_aktiivinen DROP TABLE #KELA_paattynyt
Keskeyttämispäivämäärän poiminta
Kela opintojen keskeyttämispäivän poimintaan Virrasta on kaksi tapaa riippuen siitä kuinka opiskeluoikeuden tilan muutoksen päivämäärä on tuotu Virtaan ja miten keskeyttämispäivä on ilmoitettu Kelaan nykyisillä poiminnoilla.
Kela keskeyttämispäivä (päivämäärä tieto Kelan tietuekuvauksen posiitiossa 113) =
1.) opiskelutilan päättynyt (5) alkamispäivämäärä (ei siis opiskeluoikeuden viimeinen aktiivinen päivä)
Esim. jos keskeyttämispäivä on 10.8.2015. Virtaan tuotu opiskeluoikeuden viimeinen aktiivinen (1) päivä on 9.8.2015.
Opiskeluoikeuden tila päättynyt (5) alkamispäivämäärä 10.8.2015 (tilan (5) päättymispvm 10.8.2015 tai NULL).
Poimitaan siis keskeyttämispäivä = alkamispäivämäärä 10.8.2015
2.) opiskeluoikeuden viimeinen aktiivinen (1) päivä = päättymispäivämäärä
Esim. jos keskeyttämispäivä on 31.12.2014. Virtaan tuotu opiskeluoikeuden viimeinen aktiivinen (1) päivä 31.12.2014, opiskeluoikeuden tila päättynyt tila alkaa 1.1.2015.
Poimitaan siis keskeyttämispäivä = päättymispäivämäärä 31.12.2014
Katso kuva opiskeluoikeuden tila.
Keskeyttäneet AMK (Tapahtumakoodi K - E)
Jos opiskelijalla on aktiivinen voimassa oleva opiskeluoikeus (tapahtumakoodi L) keskeyttämistietoa ei poimita.
/* Versio 1. niille korkeakouluille joiden päättymispäivämäärä on opiskelutilan passivoitu (4) alkamispäivämäärä */ /* Katso alempana versio 2. poiminta korkeakouluille joiden päättymispäivämäärä on viimeinen aktiivinen (1) päivä */ DECLARE @YEAR varchar(4) = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' /* Jos on vielä aktivinen vaikka on E keskeytys merkintä */ CREATE TABLE #KELA_viela_aktiivinen ( oid int, tila_koodi int, hetu varchar(12) ) INSERT INTO #KELA_viela_aktiivinen (oid,tila_koodi,hetu) SELECT DISTINCT O.ID AS oID , OT.Koodi AS tila_koodi , H.Henkilotunnus AS hetu FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOOT ON OO.Op_oikeuden_tyyppiID = OOOT.id WHERE (OOT.Paattymispaivamaara > GETDATE() OR OOT.Paattymispaivamaara IS NULL ) AND OT.Koodi = 1 /* Aktiivinen */ AND LEN(LTRIM(H.Henkilotunnus))>7 AND OOOT.Koodi NOT IN (9,13,17,18) /* ei avoimen, vaihto, valmentava, erillinen */ /* Opiskelujen viimeinen aktiivinen päivä on päättymispaiva */ CREATE TABLE #KELA_paattynyt ( oid int, tila_koodi int, Alkamispaivamaara date ) INSERT INTO #KELA_paattynyt (oid,tila_koodi,Alkamispaivamaara) SELECT OO.ID AS oID , OT.Koodi AS tila_koodi , OOT.Alkamispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara >= @Syys_alk AND OT.Koodi = 4 /* Passivoitu */ /* Eikä saa olla valmistuneiden joukossa vaikka on keskytysmerkintä ennen sitä */ AND OO.ID NOT IN ( SELECT DISTINCT OO.ID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara>= @Syys_alk AND OT.Koodi = 3 /* Päättynyt */ AND OO.id IN ( SELECT opiskeluoikeusid AS id FROM Opintosuoritus WHERE Opintosuorituksen_lajiID = 1 ) ) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,H.Henkilotunnus AS henkilotunnus ,H.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OTT.Koodi = 1 THEN 'T' WHEN OTT.Koodi = 3 THEN 'H' WHEN OTT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'K' AS Tapahtumakoodi /* Viimeinen aktiivinen on päättymispäivä */ ,REPLACE((CONVERT(varchar(12), KP.Alkamispaivamaara, 105)),'-','') AS Paivamaara ,' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi ,' ' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , 'E' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID LEFT JOIN #KELA_paattynyt KP ON KP.oid = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OTT ON OTT.ID = OO.Op_oikeuden_tyyppiID WHERE H.Henkilotunnus NOT IN (SELECT hetu AS henkilotunnus FROM #KELA_viela_aktiivinen) AND OT.Koodi = 4 /* Passivoitu */ AND OTT.Koodi IN (1,3,12,14,15) AND OOT.Alkamispaivamaara >= @Syys_alk AND LEN(LTRIM(H.Henkilotunnus))>7 AND KP.Alkamispaivamaara IS NOT NULL DROP TABLE #KELA_viela_aktiivinen DROP TABLE #KELA_paattynyt /* Versio 2. */ /* Opiskelujen viimeinen aktiivinen (1) päivä on päättymispaiva */ DECLARE @YEAR varchar(4) = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' /* Jos on vielä aktivinen vaikka on E keskeytys merkintä */ CREATE TABLE #KELA_viela_aktiivinen ( oid int, tila_koodi int, hetu varchar(12) ) INSERT INTO #KELA_viela_aktiivinen (oid,tila_koodi,hetu) SELECT DISTINCT O.ID AS oID , OT.Koodi AS tila_koodi , H.Henkilotunnus AS hetu FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN dbo.[Opiskeluoikeuden_tyyppi] OOOT ON OO.Op_oikeuden_tyyppiID = OOOT.id WHERE (OOT.Paattymispaivamaara > GETDATE() OR OOT.Paattymispaivamaara IS NULL ) AND OT.Koodi = 1 /* Aktiivinen */ AND LEN(LTRIM(H.Henkilotunnus))>7 AND OOOT.Koodi NOT IN (9,13,17,18) /* ei avoimen, vaihto, valmentava, erillinen */ /* Opiskelujen viimeinen aktiivinen päivä on päättymispaiva */ CREATE TABLE #KELA_paattynyt ( oid int, tila_koodi int, Alkamispaivamaara date ) INSERT INTO #KELA_paattynyt (oid,tila_koodi,Alkamispaivamaara) SELECT OO.ID AS oID , OT.Koodi AS tila_koodi , max(OOT.Paattymispaivamaara) AS Alkamispaivamaara FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Paattymispaivamaara >= @Syys_alk AND OT.Koodi = 1 /* Aktiivinen */ AND OO.ID IN ( SELECT DISTINCT OO.ID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara>= @Syys_alk AND OT.Koodi = 4 /* Passivoitu */ AND LEN(LTRIM(H.Henkilotunnus))>7 ) /* Eikä saa olla valmistuneiden joukossa vaikka on keskytysmerkintä ennen sitä */ AND OO.ID NOT IN ( SELECT DISTINCT OO.ID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE OOT.Alkamispaivamaara>= @Syys_alk AND OT.Koodi = 3 /* Päättynyt */ AND OO.id IN ( SELECT opiskeluoikeusid AS id FROM Opintosuoritus WHERE Opintosuorituksen_lajiID = 1 ) ) GROUP BY OO.ID, OT.Koodi SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+ORG.Koodi AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,ORG.Koodi AS oppilaitos ,H.Henkilotunnus AS henkilotunnus ,H.Sukunimi ,substring(h.Etunimet,1,30) AS Etunimet ,CASE WHEN OTT.Koodi = 1 THEN 'T' WHEN OTT.Koodi = 3 THEN 'H' WHEN OTT.Koodi IN (12,14,15) THEN 'E' END AS opinnot_johon_hyvaksytty ,'K' AS Tapahtumakoodi /* Viimeinen aktiivinen on päättymispäivä */ ,REPLACE((CONVERT(varchar(12), KP.Alkamispaivamaara, 105)),'-','') AS Paivamaara ,' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi ,' ' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , 'E' AS keskeyttamisen_ilmoittaja , GETDATE() , substring(ORG.Nimi,1,20) AS organisaatio FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID LEFT JOIN Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID LEFT JOIN #KELA_paattynyt KP ON KP.oid = OO.ID LEFT JOIN Op_oikeuden_organisaatio OOO ON OOO.OpiskeluoikeusID = oo.ID LEFT JOIN Organisaatio ORG ON ORG.ID = OOO.OrganisaatioID LEFT JOIN Opiskeluoikeuden_tyyppi OTT ON OTT.ID = OO.Op_oikeuden_tyyppiID WHERE H.Henkilotunnus NOT IN (SELECT hetu AS henkilotunnus FROM #KELA_viela_aktiivinen) AND OT.Koodi = 4 /* Passivoitu */ AND OTT.Koodi IN (1,3,12,14,15) AND OOT.Alkamispaivamaara >= @Syys_alk AND LEN(LTRIM(H.Henkilotunnus))>7 AND KP.Alkamispaivamaara IS NOT NULL DROP TABLE #KELA_viela_aktiivinen DROP TABLE #KELA_paattynyt
Opiskelutiedon poiminnat YO
Yliopistojen opiskelutiedot kerätään KELA_opiskelutiedot tauluun.
Läsnäolo-olot (L), valmistumistiedot (W)
CREATE TABLE [KELA_opiskelutiedot]( [opiskeluoikeus_ID] [int] NOT NULL, [siirtotunnus] [varchar](6) NOT NULL, [tietuetyyppi] [char](1) NOT NULL, [poimintapaivamaara] [varchar](8) NOT NULL, [siirtolaji] [varchar](5) NOT NULL, [lahettajaryhman_tunnus] [varchar](2) NOT NULL, [oppilaitos] [varchar](5) NOT NULL, [henkilotunnus] [varchar](11) NOT NULL, [sukunimi] [varchar](30) NOT NULL, [etunimet] [varchar](30) NOT NULL, [opinnot_johon_hyvaksytty] [char](1) NOT NULL, [tapahtumakoodi] [char](1) NOT NULL, [paivamaara] [varchar](8) NOT NULL, [valmistunut_tutkinto] [char](1) NOT NULL, [syyslukukausi] [char](1) NOT NULL, [kevatlukukausi] [char](1) NOT NULL, [tutkinnon_laajuus] [varchar](3) NOT NULL, [opintojen_aloituspaiva] [varchar](8) NULL, [sukupuoli] [char](1) NOT NULL, [keskeyttamisen_ilmoittaja] [char](1) NOT NULL, [reg_date] [smalldatetime] NOT NULL, [organisaatio] [varchar](20) NULL, [tilastokeskuksen_koulutuskoodi] [varchar](6) NULL, [kela_tutkinnon_taso] [varchar](3) NULL, [kk] [varchar](20) NULL, [opiskelijaAvain] [varchar](100) NULL, [opiskeluOikeusAvain] [varchar](100) NULL )
Valmistuneet YO-tutkinnot (Tapahtumakoodi W)
DECLARE @mydb varchar(20) /* Korkeakoulu lyhenne Virrassa esim @mydb = 'HY' */ DECLARE @vuosi varchar(4) /* Ajankohtainen lukuvuosi esim @vuosi = 2016 */ DECLARE @YEAR varchar(4) = @vuosi DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' /* Päättyneet oikeudet */ CREATE TABLE #KELA_paattynyt ( opiskeluoikeusid int, opiskelijaid int, tila_koodi int, Tilan_Alkamispaivamaara date, opiskelijaAvain varchar(100), opiskeluoikeusAvain varchar(100), hetu varchar(15), oo_paattynyt date ) /* Syksystä alkaen päättyneet (tilakoodilla 3) opiskeluoikeudet */ INSERT INTO #KELA_paattynyt (opiskeluoikeusid,opiskelijaid,tila_koodi,Tilan_Alkamispaivamaara,opiskelijaAvain,opiskeluoikeusAvain, hetu,oo_paattynyt) SELECT DISTINCT OO.ID AS opiskeluoikeusid , O.id AS opiskelijaid , OT.Koodi AS tila_koodi , OOT.Alkamispaivamaara AS Tilan_Alkamispaivamaara , O.avain , OO.avain , H.henkilotunnus , OO.Paattymispaivamaara FROM virta.dbo.Henkilo H JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID JOIN virta.dbo.Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN virta.dbo.Opiskeluoikeuden_tyyppi OTYP ON OO.Op_oikeuden_tyyppiID = OTYP.id WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OOT.db = @mydb AND OOT.Alkamispaivamaara >= @Syys_alk AND OOT.Alkamispaivamaara < getdate() AND OT.Koodi = 3 /* Päättynyt */ AND OTYP.Koodi NOT IN (8,9,10,13,14,18) /* Ei kotimainen tai ulkomaa opiskelijaliikkuvuus,täydennyskoulutus, avoimet, erillinen opiskeluoikeus */ AND OO.id NOT IN (SELECT KP.opiskeluoikeusid FROM #KELA_paattynyt KP) /* Opiskeluoikeudet Kela koodeilla */ CREATE TABLE #opiskelu_oikeudet_yo ( opiskelijaid int, kela_opinto_koodi char(1), virta_koodi smallint, opiskeluoikeusid int, opiskeluoikeus_paattymispvm date, hetu varchar(15), tutkinto_laajuus int ) INSERT INTO #opiskelu_oikeudet_yo (opiskelijaid,kela_opinto_koodi,virta_koodi,opiskeluoikeusid,opiskeluoikeus_paattymispvm,hetu,tutkinto_laajuus ) SELECT DISTINCT O.ID AS opiskelijaid , CASE WHEN OT.Koodi = 2 THEN 'A' WHEN OT.Koodi = 4 THEN 'Y' WHEN OT.Koodi IN ( 6,7) THEN 'J' END AS kela_opinto_koodi , OT.koodi AS virta_koodi , OO.id AS opiskeluoikeusid , OO.Paattymispaivamaara AS opiskeluoikeus_paattymispvm , H.henkilotunnus , FLOOR(OO.Laajuus) AS tutkinto_laajuus FROM virta.dbo.Opiskeluoikeus OO JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OO.Op_oikeuden_tyyppiID = OT.id JOIN virta.dbo.Opiskelija O ON O.id = OO.OpiskelijaID JOIN virta.dbo.Henkilo H ON H.id = o.HenkiloID WHERE OO.ID IN (SELECT opiskeluoikeusid AS ID FROM #KELA_paattynyt) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OT.Koodi NOT IN (8,9,10,13,14,18) /* Ei kotimainen tai ulkomaa opiskelijaliikkuvuus,täydennyskoulutus, avoimet, erillinen opiskeluoikeus */ ORDER BY O.ID UPDATE OYO SET OYO.kela_opinto_koodi = 'Y' FROM #opiskelu_oikeudet_yo OYO WHERE OYO.kela_opinto_koodi = 'A' AND OYO.opiskelijaid IN ( SELECT OO2.OpiskelijaID FROM virta.dbo.Opiskeluoikeus OO2 JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT2 ON OO2.Op_oikeuden_tyyppiID = OT2.id WHERE OO2.OpiskelijaID = OYO.opiskelijaid AND OT2.koodi = '4' AND OO2.db = @mydb ) UPDATE OYO SET OYO.kela_opinto_koodi = 'R' FROM #opiskelu_oikeudet_yo OYO WHERE OYO.kela_opinto_koodi = 'Y' AND OYO.opiskelijaid NOT IN ( SELECT OO2.OpiskelijaID FROM virta.dbo.Opiskeluoikeus OO2 JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT2 ON OO2.Op_oikeuden_tyyppiID = OT2.id WHERE OO2.OpiskelijaID = OYO.opiskelijaid AND OT2.koodi = '2' AND OO2.db = @mydb ) CREATE TABLE #kela_A_tutkinto ( opiskelijaid int, opiskeluoikeusid int, kela_opinto_koodi char(1), valmistunut_tutkinto char(1) null, tutkinto_laajuus int null , jatkamistieto char(1), tutkintokoodi int ) CREATE TABLE #kela_tutkinto ( opiskelijaid int, opiskeluoikeusid int, kela_opinto_koodi char(1), valmistunut_tutkinto char(1) null, tutkinto_laajuus int null, jatkamistieto char(1), tutkintokoodi int ) CREATE TABLE #kela_tutkinto_speciale ( opiskelijaid int, opiskeluoikeusid int, kela_opinto_koodi char(1), valmistunut_tutkinto char(1) null, tutkinto_laajuus int null, jatkamistieto char(1), tutkintokoodi int ) INSERT INTO #kela_tutkinto ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi ) SELECT DISTINCT KOY.opiskelijaid , KOY.opiskeluoikeusid , KOY.kela_opinto_koodi , CASE WHEN KOY.virta_koodi = 2 THEN 'A' WHEN KOY.virta_koodi = 4 AND KOY.kela_opinto_koodi = 'Y' THEN 'Y' WHEN KOY.virta_koodi IN (6,7) THEN 'J' WHEN KOY.kela_opinto_koodi = 'R' THEN 'R' END AS valmistunut_tutkinto , CASE WHEN KOY.virta_koodi = 2 THEN 180 WHEN KOY.virta_koodi = 4 AND KOY.kela_opinto_koodi = 'Y' THEN 300 WHEN KOY.virta_koodi IN (6,7) THEN CEILING(OS.laajuus) WHEN KOY.kela_opinto_koodi = 'R' THEN 120 END AS tutkinto_laajuus , CASE WHEN KOY.virta_koodi = 2 THEN 'K' ELSE 'E' END AS jatkamistieto , T.koodi FROM #opiskelu_oikeudet_yo KOY JOIN virta.dbo.Opintosuoritus OS ON OS.OpiskeluoikeusID = KOY.opiskeluoikeusid JOIN virta.dbo.Opintosuorituksen_laji OSL ON OSL.id = OS.Opintosuorituksen_lajiID JOIN virta.dbo.Tutkintonimike T ON T.id = OS.TutkintonimikeID WHERE OS.db = @mydb AND OSL.koodi = '1' AND OS.Suorituspaivamaara >= @Syys_alk AND OS.Suorituspaivamaara <= getdate() /* Jos opiskeluoikeutta ei ole kytkeytty tutkintosuoritukseen mutta tutkintonimike on */ IF NOT EXISTS ( SELECT * FROM #opiskelu_oikeudet_yo KOY JOIN virta.dbo.Opintosuoritus OS ON OS.OpiskeluoikeusID = KOY.opiskeluoikeusid JOIN virta.dbo.Opintosuorituksen_laji OSL ON OSL.id = OS.Opintosuorituksen_lajiID WHERE OS.db = @mydb AND OSL.koodi = '1' AND OS.Suorituspaivamaara >= @Syys_alk AND OS.Suorituspaivamaara <= getdate() ) BEGIN INSERT INTO #kela_tutkinto_speciale ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto,tutkintokoodi ) SELECT DISTINCT KOY.opiskelijaid , KOY.opiskeluoikeusid , KOY.kela_opinto_koodi , CASE WHEN KOY.virta_koodi = 2 THEN 'A' WHEN KOY.virta_koodi = 4 AND KOY.kela_opinto_koodi = 'Y' THEN 'Y' WHEN KOY.virta_koodi IN (6,7) THEN 'J' WHEN KOY.kela_opinto_koodi = 'R' THEN 'R' END AS valmistunut_tutkinto , CASE WHEN KOY.virta_koodi = 2 THEN 180 WHEN KOY.virta_koodi = 4 AND KOY.kela_opinto_koodi = 'Y' THEN 300 WHEN KOY.virta_koodi IN (6,7) THEN CEILING(OS.laajuus) WHEN KOY.kela_opinto_koodi = 'R' THEN 120 END AS tutkinto_laajuus , CASE WHEN KOY.virta_koodi = 2 THEN 'K' ELSE 'E' END AS jatkamistieto , T.koodi FROM #opiskelu_oikeudet_yo KOY JOIN virta.dbo.Opintosuoritus OS ON OS.opiskelijaid = KOY.opiskelijaid JOIN virta.dbo.Opintosuorituksen_laji OSL ON OSL.id = OS.Opintosuorituksen_lajiID JOIN virta.dbo.Tutkintonimike T ON T.id = OS.TutkintonimikeID WHERE OS.db = @mydb AND OSL.koodi = '1' AND OS.Suorituspaivamaara >= @Syys_alk AND OS.Suorituspaivamaara = KOY.opiskeluoikeus_paattymispvm AND OS.Suorituspaivamaara <= getdate() END INSERT INTO #kela_A_tutkinto ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi ) SELECT DISTINCT opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi FROM #kela_tutkinto WHERE valmistunut_tutkinto = 'A' AND opiskelijaid IN ( SELECT KT.opiskelijaid FROM #kela_tutkinto KT WHERE KT.valmistunut_tutkinto = 'Y' ) IF EXISTS (SELECT * FROM #kela_tutkinto_speciale) BEGIN INSERT INTO #kela_A_tutkinto ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi ) SELECT DISTINCT opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi FROM #kela_tutkinto_speciale WHERE valmistunut_tutkinto = 'A' AND opiskelijaid IN ( SELECT KT.opiskelijaid FROM #kela_tutkinto_speciale KT WHERE KT.valmistunut_tutkinto = 'Y' ) END DELETE FROM #kela_tutkinto WHERE valmistunut_tutkinto = 'A' AND opiskelijaid IN ( SELECT KT.opiskelijaid FROM #kela_tutkinto KT WHERE KT.valmistunut_tutkinto = 'Y' ) IF EXISTS (SELECT * FROM #kela_tutkinto_speciale) BEGIN DELETE FROM #kela_tutkinto_speciale WHERE valmistunut_tutkinto = 'A' AND opiskelijaid IN ( SELECT KT.opiskelijaid FROM #kela_tutkinto_speciale KT WHERE KT.valmistunut_tutkinto = 'Y' ) END UPDATE #kela_tutkinto SET kela_opinto_koodi = 'R' ,tutkinto_laajuus = 120 WHERE kela_opinto_koodi = 'Y' AND opiskeluoikeusid NOT IN ( SELECT OpiskeluoikeusID2 FROM virta.dbo.Opiskeluoikeuden_liittyvyys WHERE db = @mydb ) AND opiskelijaid IN ( SELECT KT.opiskelijaid FROM #kela_tutkinto KT WHERE KT.valmistunut_tutkinto = 'Y' ) /* Kuvataiteen kandidaatti, kuvataiteen tutkinto (Kuvataideakatemia) 622301 (210 op) */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'A' ,tutkinto_laajuus = 210 , jatkamistieto = 'E' WHERE kela_opinto_koodi = 'Y' AND tutkintokoodi = 622301 AND opiskeluoikeusid NOT IN ( SELECT OpiskeluoikeusID2 FROM virta.dbo.Opiskeluoikeuden_liittyvyys WHERE db = @mydb ) AND opiskelijaid IN ( SELECT KT.opiskelijaid FROM #kela_tutkinto KT WHERE KT.valmistunut_tutkinto = 'A' ) IF EXISTS (SELECT * FROM #kela_tutkinto_speciale) BEGIN UPDATE #kela_tutkinto_speciale SET kela_opinto_koodi = 'R' ,tutkinto_laajuus = 120 WHERE kela_opinto_koodi = 'Y' AND opiskeluoikeusid NOT IN ( SELECT OpiskeluoikeusID2 FROM virta.dbo.Opiskeluoikeuden_liittyvyys WHERE db = @mydb ) AND opiskelijaid IN ( SELECT KT.opiskelijaid FROM #kela_tutkinto_speciale KT WHERE KT.valmistunut_tutkinto = 'Y' ) END /* Lääketieteen lisensiaatti (360 op) */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'Y' , valmistunut_tutkinto = 'Y' ,tutkinto_laajuus = 360 WHERE tutkintokoodi = 772101 /* Hammaslääketieteen lisensiaatti (330 op) */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'Y' , valmistunut_tutkinto = 'Y' ,tutkinto_laajuus = 330 WHERE tutkintokoodi = 772201 /* Eläinlääketieteen lisensiaatti (360 op) */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'Y' , valmistunut_tutkinto = 'Y' ,tutkinto_laajuus = 360 WHERE tutkintokoodi = 772301 /* Psykologian maisteri 733501 (330 op) */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'Y' , valmistunut_tutkinto = 'Y' , tutkinto_laajuus = 330 WHERE tutkintokoodi = 733501 /* Musiikin maisteri 723111 (330 op) */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'Y' , valmistunut_tutkinto = 'Y' , tutkinto_laajuus = 330 WHERE tutkintokoodi = 723111 /* Kuvataiteen maisteri 724101 (330 op) */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'Y' , valmistunut_tutkinto = 'Y' , tutkinto_laajuus = 330 WHERE tutkintokoodi = 724101 INSERT INTO #kela_tutkinto ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi ) SELECT DISTINCT opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi FROM #kela_A_tutkinto IF EXISTS (SELECT * FROM #kela_tutkinto_speciale) BEGIN INSERT INTO #kela_tutkinto_speciale ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi ) SELECT DISTINCT opiskelijaid, opiskeluoikeusid, kela_opinto_koodi, valmistunut_tutkinto, tutkinto_laajuus, jatkamistieto, tutkintokoodi FROM #kela_A_tutkinto END /* Lasketaan aloituspvm ensimmäisen läsnäolon mukaan */ CREATE TABLE #Aloittanut ( oid int, Alkamispaivamaara date ) INSERT INTO #Aloittanut (oid, Alkamispaivamaara ) SELECT DISTINCT oo.ID, CASE WHEN MIN(L.Alkamispaivamaara) >= OJ.Alkamispaivamaara THEN MIN(L.Alkamispaivamaara) ELSE (convert(varchar(4), YEAR(OJ.Alkamispaivamaara)) + CASE WHEN MONTH(OJ.Alkamispaivamaara)>=8 THEN '-08-01' ELSE '-01-01' END) END AS Alkamispaivamaara FROM virta.dbo.Henkilo H JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Opiskeluoikeusjakso OJ ON OJ.opiskeluoikeusid = OO.id LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OJ.db = @mydb AND L.db = @mydb AND LT.Koodi = 1 /* Läsnä */ AND H.Henkilotunnus IS NOT NULL AND OO.ID IN (SELECT opiskeluoikeusid AS ID FROM #KELA_paattynyt) GROUP BY L.Alkamispaivamaara, OJ.Alkamispaivamaara, oo.ID CREATE TABLE #Min_aloituspvm ( oid int, alk_pvm date ) INSERT INTO #Min_aloituspvm (oid, alk_pvm) SELECT oid, MIN(alkamispaivamaara) As alk_pvm FROM #Aloittanut GROUP BY oid DELETE FROM KELA.dbo.KELA_opiskelutiedot WHERE kk = @mydb AND Tapahtumakoodi = 'W' IF EXISTS (SELECT * FROM #kela_tutkinto_speciale) BEGIN INSERT INTO KELA.dbo.KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain, opiskeluOikeusAvain, jatkamistieto ) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,H.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet , EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'W' AS Tapahtumakoodi , REPLACE((CONVERT(varchar(12), KP.oo_paattynyt, 105)),'-','') AS Paivamaara , EO.valmistunut_tutkinto AS valmistunut_tutkinto --, EO.jatkamistieto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi , EO.tutkinto_laajuus AS tutkinnon_laajuus , REPLACE((CONVERT(varchar(12), M.alk_pvm, 105)),'-','') AS Opintojen_aloituspaiva , CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() AS regDatum ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , EO.tutkintokoodi , @mydb AS kk , O.avain AS opiskelijaAvain , OO.avain AS opiskeluOikeusAvain , EO.jatkamistieto FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID INNER JOIN #kela_tutkinto_speciale EO ON EO.OpiskeluoikeusID = OO.ID INNER JOIN #Min_aloituspvm M ON M.oid = EO.OpiskeluoikeusID AND M.oid = OO.ID INNER JOIN #KELA_paattynyt KP ON KP.OpiskeluoikeusID = EO.OpiskeluoikeusID WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND KP.oo_paattynyt >= @Syys_alk AND EO.kela_opinto_koodi IS NOT NULL ORDER BY H.henkilotunnus END ELSE BEGIN INSERT INTO KELA.dbo.KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain, opiskeluOikeusAvain, jatkamistieto ) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,H.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet , EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'W' AS Tapahtumakoodi , REPLACE((CONVERT(varchar(12), OS.Suorituspaivamaara, 105)),'-','') AS Paivamaara , EO.valmistunut_tutkinto AS valmistunut_tutkinto --, EO.jatkamistieto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi , EO.tutkinto_laajuus AS tutkinnon_laajuus , REPLACE((CONVERT(varchar(12), M.alk_pvm, 105)),'-','') AS Opintojen_aloituspaiva , CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() AS regDatum ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , EO.tutkintokoodi , @mydb AS kk , O.avain AS opiskelijaAvain , OO.avain AS opiskeluOikeusAvain , EO.jatkamistieto FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID INNER JOIN #kela_tutkinto EO ON EO.OpiskeluoikeusID = OO.ID INNER JOIN virta.dbo.Opintosuoritus OS ON OS.OpiskeluoikeusID = EO.OpiskeluoikeusID AND OS.OpiskeluoikeusID = OO.ID INNER JOIN #Min_aloituspvm M ON M.oid = EO.OpiskeluoikeusID AND M.oid = OO.ID INNER JOIN #KELA_paattynyt KP ON KP.OpiskeluoikeusID = EO.OpiskeluoikeusID WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OS.db = @mydb AND OS.Suorituspaivamaara >= @Syys_alk AND OS.Suorituspaivamaara >= ISNULL(KP.oo_paattynyt,@Syys_alk) AND EO.kela_opinto_koodi IS NOT NULL ORDER BY H.henkilotunnus END DROP TABLE #KELA_paattynyt DROP TABLE #opiskelu_oikeudet_yo DROP TABLE #kela_tutkinto DROP TABLE #kela_A_tutkinto DROP TABLE #Aloittanut DROP TABLE #Min_aloituspvm DROP TABLE #kela_tutkinto_speciale
Valmistuneet YO ei-tutkintoon johtavat (P) (Tapahtumakoodi W)
DECLARE @YEAR varchar(4) = @vuosi DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' /* Päättyneet oikeudet */ CREATE TABLE #KELA_paattynyt ( opiskeluoikeusid int, opiskelijaid int, tila_koodi int, Tilan_Alkamispaivamaara date, opiskelijaAvain varchar(100), opiskeluoikeusAvain varchar(100), hetu varchar(15), oo_paattynyt date ) /* Syksystä alkaen valmistuneet ei Tutkintoon johtava viimeinen aktiivinen päivä päättymispvm */ INSERT INTO #KELA_paattynyt (opiskeluoikeusid,opiskelijaid,tila_koodi,Tilan_Alkamispaivamaara,opiskelijaAvain,opiskeluoikeusAvain, hetu,oo_paattynyt) SELECT DISTINCT OO.ID AS opiskeluoikeusid , O.id AS opiskelijaid , OT.Koodi AS tila_koodi , max(OOT.Paattymispaivamaara) AS Tilan_Alkamispaivamaara , O.avain , OO.avain , H.henkilotunnus , OO.Paattymispaivamaara FROM virta.dbo.Henkilo H JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID JOIN virta.dbo.Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID JOIN virta.dbo.Opiskeluoikeuden_tyyppi OTYP ON OO.Op_oikeuden_tyyppiID = OTYP.id WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OOT.db = @mydb AND OTYP.Koodi IN ('5','10','14','16','17','18','19') AND LEN(LTRIM(H.Henkilotunnus))>7 AND OOT.Paattymispaivamaara >= @Syys_alk AND OT.Koodi = 1 /* Viimeinen Aktiivinen päivä */ AND OO.ID IN ( SELECT DISTINCT OO2.ID FROM virta.dbo.Henkilo H2 LEFT JOIN virta.dbo.Opiskelija O2 ON O2.HenkiloID = H2.ID LEFT JOIN virta.dbo.Opiskeluoikeus OO2 ON OO2.OpiskelijaID = O2.ID LEFT JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT2 ON OO2.ID = OOT2.OpiskeluoikeusID LEFT JOIN virta.dbo.Opiskeluoikeuden_tila OT2 ON OT2.ID = OOT2.Op_oikeuden_tilaID WHERE OOT2.Alkamispaivamaara >= @Syys_alk AND OOT2.Alkamispaivamaara < getdate() AND OT2.Koodi = 3 /* Valmistunut */ ) AND OO.id NOT IN (SELECT KP.opiskeluoikeusid FROM #KELA_paattynyt KP) GROUP BY OOT.Paattymispaivamaara, OO.ID, OT.Koodi,O.id,O.avain,OO.avain, H.henkilotunnus, OO.Paattymispaivamaara DELETE FROM KELA.dbo.KELA_opiskelutiedot WHERE kk = @mydb AND Tapahtumakoodi = 'W' AND valmistunut_tutkinto = 'P' AND opinnot_johon_hyvaksytty = 'P' /* Summa summarum */ INSERT INTO KELA.dbo.KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kk,opiskelijaAvain, opiskeluOikeusAvain, jatkamistieto ) SELECT DISTINCT OO.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,h.Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet , CASE WHEN OT.Koodi = '2' THEN 'A' WHEN OT.Koodi = '4' THEN 'Y' WHEN OT.Koodi IN ('6','7') THEN 'J' WHEN OT.Koodi IN ('5','10','14','16','17','18','19') THEN 'P' END AS opinnot_johon_hyvaksytty ,'W' AS Tapahtumakoodi ,REPLACE((CONVERT(varchar(12), KP.oo_paattynyt, 105)),'-','') AS Paivamaara , CASE WHEN OT.Koodi = '2' THEN 'A' WHEN OT.Koodi = '4' THEN 'Y' WHEN OT.Koodi IN ('6','7') THEN 'J' WHEN OT.Koodi IN ('5','10','14','16','17','18','19') THEN 'P' END AS valmistunut_tutkinto , ' ' AS syyslukukausi , ' ' AS kevatlukukausi ,0 AS tutkinnon_laajuus ,' ' AS Opintojen_aloituspaiva --,REPLACE((CONVERT(varchar(12), M.alk_pvm, 105)),'-','') AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() AS regDatum ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , @mydb AS kk , O.avain AS opiskelijaAvain , OO.avain AS opiskeluOikeusAvain , 'E' AS jatkamistieto FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID --INNER JOIN #Min_aloituspvm M ON M.oid = OO.ID INNER JOIN #KELA_paattynyt KP ON KP.OpiskeluoikeusID = OO.ID WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OT.Koodi IN ('5','10','14','16','17','18','19') AND KP.oo_paattynyt < getdate() DROP TABLE #KELA_paattynyt
Läsnä- ja poissaolevat YO (Tapahtumakoodi L)
DECLARE @mydb varchar(20) /* Korkeakoulu lyhenne Virrassa esim @mydb = 'HY' */ DECLARE @vuosi varchar(4) /* Ajankohtainen lukuvuosi esim @vuosi = 2016 */ DECLARE @YEAR varchar(4) = @vuosi DECLARE @plus_vuosi varchar(4) SET @plus_vuosi = convert(int,@YEAR) + 1 DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' DECLARE @Syys_lop date SET @Syys_lop = @YEAR+'-12-31' DECLARE @Kevat_alk date SET @Kevat_alk = @plus_vuosi + '-01-01' DECLARE @Kevat_lop date SET @Kevat_lop = @plus_vuosi + '-07-31' DECLARE @Paivamaara varchar(8) SET @Paivamaara = '0108'+@YEAR /* Aktiiviset (+ passiviset) johon opiskelijalla on opiskeluoikeus */ CREATE TABLE #KELA_aktiivinen ( oid int, ooid int, tila_koodi int, opiskelijaAvain varchar(100), opiskeluOikeusAvain varchar(100), ) INSERT INTO #KELA_aktiivinen (oid, ooid, tila_koodi,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS oid , OO.id AS oodi , OT.Koodi AS tila_koodi , O.avain AS opiskelijaAvain , OO.avain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID JOIN virta.dbo.Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OOT.db = @mydb AND (OOT.Paattymispaivamaara >= @Syys_alk OR OOT.Paattymispaivamaara IS NULL) AND OT.Koodi IN ('1','2') /* Aktiivinen ja passivisessa tilassa voimassa olevat */ AND LEN(LTRIM(H.Henkilotunnus))>7 AND OO.ID NOT IN ( SELECT DISTINCT OO.ID FROM virta.dbo.Henkilo H JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID JOIN virta.dbo.Opiskeluoikeuden_tila OT ON OT.ID = OOT.Op_oikeuden_tilaID WHERE H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OOT.db = @mydb AND OOT.Alkamispaivamaara >= @Syys_alk AND OT.Koodi IN ( '3', '4', '5' ) /* Opiskeluoikeus päättynyt */ ) /* Mihin on opiskeluoikeus */ CREATE TABLE #tutkinnot_johon_valittu ( opiskelijaid int, opiskeluoikeusid int, opiskeluoikeustyyppi int, kela_opinto_koodi char(1), opiskelijaAvain varchar(100), opiskeluOikeusAvain varchar(100) ) INSERT INTO #tutkinnot_johon_valittu( opiskelijaid,opiskeluoikeusid,opiskeluoikeustyyppi,kela_opinto_koodi,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.id AS opiskelijaid , OO.id AS opiskeluoikeusid , OT.koodi AS opiskeluoikeustyyppi , CASE WHEN OT.Koodi = '2' THEN 'A' WHEN OT.Koodi = '4' THEN 'Y' WHEN OT.Koodi IN ('6','7') THEN 'J' END AS kela_opinto_koodi , O.avain , OO.avain FROM virta.dbo.Henkilo H JOIN virta.dbo.Opiskelija O ON H.id = O.HenkiloID JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OO.Op_oikeuden_tyyppiID = OT.id JOIN virta.dbo.Opiskeluoikeusjakso OJ ON OJ.OpiskeluoikeusID = OO.id JOIN virta.dbo.Tutkintonimike T ON T.id = OJ.TutkintonimikeID JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OO.ID = OOT.OpiskeluoikeusID JOIN virta.dbo.Opiskeluoikeuden_tila OTT ON OTT.ID = OOT.Op_oikeuden_tilaID WHERE O.id IN (SELECT oid FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OJ.db = @mydb AND OOT.db = @mydb AND @Syys_alk < COALESCE(OJ.Paattymispaivamaara,'2022-11-11') CREATE TABLE #kela_tutkinto ( opiskelijaid int, opiskeluoikeusid int, kela_opinto_koodi char(1), opiskelijaAvain varchar(100), opiskeluOikeusAvain varchar(100) ) /* Maisterit (Y) */ INSERT INTO #kela_tutkinto ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT opiskelijaid, opiskeluoikeusid, kela_opinto_koodi,opiskelijaAvain,opiskeluOikeusAvain FROM #tutkinnot_johon_valittu WHERE opiskeluoikeustyyppi = 4 /* Muut kuin maisterit (A, J) */ INSERT INTO #kela_tutkinto ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT opiskelijaid, opiskeluoikeusid, kela_opinto_koodi,opiskelijaAvain,opiskeluOikeusAvain FROM #tutkinnot_johon_valittu WHERE opiskeluoikeustyyppi <> 4 AND opiskelijaid NOT IN ( SELECT opiskelijaid FROM #kela_tutkinto ) /* Kaikki opiskeluoikeudet Kela koodeilla */ CREATE TABLE #opiskelu_oikeudet_yo ( opiskelijaid int, kela_opinto_koodi char(1), virta_koodi smallint, opiskeluoikeusid int, opiskeluoikeus_paattymispvm date, opiskelijaAvain varchar(100), opiskeluOikeusAvain varchar(100) ) INSERT INTO #opiskelu_oikeudet_yo (opiskelijaid,kela_opinto_koodi,virta_koodi,opiskeluoikeusid,opiskeluoikeus_paattymispvm,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskelijaid , CASE WHEN OT.Koodi = '2' THEN 'A' WHEN OT.Koodi = '4' THEN 'Y' WHEN OT.Koodi IN ( '6','7') THEN 'J' END AS kela_opinto_koodi , OT.koodi AS virta_koodi , OO.id AS opiskeluoikeusid , OO.Paattymispaivamaara AS opiskeluoikeus_paattymispvm , O.avain AS opiskelijaAvain , OO.avain AS opiskeluOikeusAvain FROM virta.dbo.Opiskeluoikeus OO JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OO.Op_oikeuden_tyyppiID = OT.id JOIN virta.dbo.Opiskelija O ON O.id = OO.OpiskelijaID JOIN virta.dbo.Henkilo H ON H.id = o.HenkiloID WHERE O.ID IN ( SELECT oid AS ID FROM #KELA_aktiivinen ) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND OT.Koodi NOT IN ('8', '9', '10', '13', '18') /* Ei kotimainen tai ulkomaa opiskelijaliikkuvuus,täydennyskoulutus, avoimet, erillinen opiskeluoikeus */ ORDER BY O.ID /* R */ /* Jos tiedoksi tulisi Y, pitää vielä tehdä lisäpäättely: Jos ylempään tutkintoon liittyvälle opiskeluoikeudelle ei löydy liittyvää alempaa opiskeluoikeutta, tiedoksi tulee Y:n sijasta R (erillinen ylempi korkeakoulututkinto). */ UPDATE #kela_tutkinto SET kela_opinto_koodi = 'R' WHERE kela_opinto_koodi = 'Y' AND opiskeluoikeusid NOT IN ( SELECT OpiskeluoikeusID2 FROM virta.dbo.Opiskeluoikeuden_liittyvyys WHERE db = @mydb ) UPDATE #kela_tutkinto SET kela_opinto_koodi = 'R' WHERE kela_opinto_koodi = 'Y' AND opiskelijaid NOT IN ( SELECT opiskelijaid FROM #opiskelu_oikeudet_yo WHERE kela_opinto_koodi = 'A') AND opiskelijaid NOT IN ( SELECT opiskelijaid FROM #opiskelu_oikeudet_yo WHERE kela_opinto_koodi = 'J') /* Ensisijaisuus */ CREATE TABLE #ensisijaisuus ( opiskelijaid int, opiskeluoikeusid int, oikeus_nimi varchar(50), alkpvm date, lopppvm date, opiskelijaAvain varchar(100), opiskeluOikeusAvain varchar(100) ) INSERT INTO #ensisijaisuus (opiskelijaid , opiskeluoikeusid,oikeus_nimi,alkpvm,lopppvm,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT OO.OpiskelijaID, OO.id AS OpiskeluoikeusID, OT.nimi, OO.Alkamispaivamaara, OO.Paattymispaivamaara, K.opiskelijaAvain, OO.avain AS opiskeluOikeusAvain FROM #KELA_aktiivinen K JOIN virta.dbo.Opiskeluoikeus OO ON OO.id = K.ooid JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.id = OO.Op_oikeuden_tyyppiID JOIN virta.dbo.Op_oikeuteen_liittyva_tila OOT ON OOT.OpiskeluoikeusID = OO.ID JOIN virta.dbo.Op_oikeuden_ensisijaisuus OE ON OO.id = OE.OpiskeluoikeusID WHERE OO.db = @mydb AND OE.db = @mydb AND OOT.db = @mydb AND @Syys_alk < COALESCE(OE.Paattymispaivamaara,'2022-11-11') CREATE TABLE #kela_tutkinto_final ( opiskelijaid int, opiskeluoikeusid int, kela_opinto_koodi char(1), opiskelijaAvain varchar(100), opiskeluOikeusAvain varchar(100) ) INSERT INTO #kela_tutkinto_final ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT K.opiskelijaid, K.opiskeluoikeusid, K.kela_opinto_koodi,E.opiskelijaAvain,E.opiskeluOikeusAvain FROM #kela_tutkinto K JOIN #ensisijaisuus E ON K.opiskelijaid = E.opiskelijaid AND E.opiskeluoikeusid = K.opiskeluoikeusid ORDER BY K.opiskelijaid --Loput ei ensisijaisuutta INSERT INTO #kela_tutkinto_final ( opiskelijaid, opiskeluoikeusid, kela_opinto_koodi,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT Ko.opiskelijaid, Ko.opiskeluoikeusid, Ko.kela_opinto_koodi, Ko.opiskelijaAvain, Ko.opiskeluOikeusAvain FROM #kela_tutkinto Ko WHERE Ko.opiskelijaid NOT IN ( SELECT K.opiskelijaid FROM #ensisijaisuus E JOIN #kela_tutkinto K ON K.opiskelijaid = E.opiskelijaid AND E.opiskeluoikeusid = K.opiskeluoikeusid ) ORDER BY Ko.OpiskelijaID /* Läsnäoloilmoitukset, kaikki mahdolliset kombinaatiot */ CREATE TABLE #KELA_lasnaolo ( oid int, tila_koodi int, lukukausi char, Alkamispaivamaara date, Paattymispaivamaara date ) /* Syksyllä Läsnä L */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT O.ID AS oid , LT.Koodi AS tila_koodi , 'S' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE H.db = @mydb AND O.db = @mydb AND L.db = @mydb AND L.Alkamispaivamaara >= @Syys_alk AND L.Paattymispaivamaara <= @Syys_lop AND LT.Koodi = '1' /* Läsnä */ AND LEN(LTRIM(H.Henkilotunnus))>7 /* Syksyllä Poissa P */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT O.ID AS oid , LT.Koodi AS tila_koodi , 'S' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE H.db = @mydb AND O.db = @mydb AND L.db = @mydb AND L.Alkamispaivamaara >= @Syys_alk AND L.Paattymispaivamaara <= @Syys_lop AND LT.Koodi IN ('2','3') /* Poissa */ AND LEN(LTRIM(H.Henkilotunnus))>7 /* Kevällä Läsnä L */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT O.ID AS oid , LT.Koodi AS tila_koodi , 'K' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE H.db = @mydb AND O.db = @mydb AND L.db = @mydb AND L.Alkamispaivamaara >= @Kevat_alk AND L.Paattymispaivamaara <= @Kevat_lop AND LT.Koodi = '1' /* Läsnä */ AND LEN(LTRIM(H.Henkilotunnus))>7 /* Kevällä Poissa P */ INSERT INTO #KELA_lasnaolo (oid,tila_koodi,lukukausi,Alkamispaivamaara,Paattymispaivamaara) SELECT DISTINCT O.ID AS oid , LT.Koodi AS tila_koodi , 'K' AS lukukausi , L.Alkamispaivamaara , L.Paattymispaivamaara FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE H.db = @mydb AND O.db = @mydb AND L.db = @mydb AND L.Alkamispaivamaara >= @Kevat_alk AND L.Paattymispaivamaara <= @Kevat_lop AND LT.Koodi IN ('2','3') /* Poissa */ AND LEN(LTRIM(H.Henkilotunnus))>7 DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND Tapahtumakoodi = 'L' /* LL */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'L' AS syyslukukausi , 'L' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'S') AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL /* PP */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'P' AS syyslukukausi , 'P' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'S') AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL /* L */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'L' AS syyslukukausi , ' ' AS kevatlukukausi -- Kevät puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'S') AND O.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL /* P */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'P' AS syyslukukausi , ' ' AS kevatlukukausi -- Kevät puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'S') AND O.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL /* LP */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'L' AS syyslukukausi , 'P' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'S') AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL /* PL */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , 'P' AS syyslukukausi , 'L' AS kevatlukukausi ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'S') AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL /* _L */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , 'L' AS kevatlukukausi -- Syys puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(OROT.Organisaatio_nimi,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'S') AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi = 1 AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL /* _P */ INSERT INTO KELA_opiskelutiedot ( opiskeluoikeus_ID, siirtotunnus, tietuetyyppi, poimintapaivamaara, siirtolaji, lahettajaryhman_tunnus, oppilaitos, henkilotunnus, sukunimi, etunimet, opinnot_johon_hyvaksytty, tapahtumakoodi, paivamaara, valmistunut_tutkinto, syyslukukausi, kevatlukukausi, tutkinnon_laajuus, opintojen_aloituspaiva, sukupuoli, keskeyttamisen_ilmoittaja, reg_date, organisaatio, kela_tutkinnon_taso,tilastokeskuksen_koulutuskoodi, kk,opiskelijaAvain,opiskeluOikeusAvain ) SELECT DISTINCT O.ID AS opiskeluoikeus_ID ,'L'+(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb) AS siirtotunnus ,'T' AS tietuetyyppi ,REPLACE((CONVERT(varchar(12), GETDATE(), 105)),'-','') AS poimintapaivamaara ,'OPISK' AS siirtolaji ,'OP' AS lahettajaryhman_tunnus ,(select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB = @mydb ) AS oppilaitos ,h.Henkilotunnus AS henkilotunnus ,substring(h.Sukunimi,1,30) AS Sukunimi ,ISNULL (substring(h.Etunimet,1,30),'') AS Etunimet ,EO.kela_opinto_koodi AS opinnot_johon_hyvaksytty ,'L' AS Tapahtumakoodi ,@Paivamaara AS Paivamaara , ' ' AS valmistunut_tutkinto , ' ' AS syyslukukausi , 'P' AS kevatlukukausi -- Syys puuttuu ,'' AS tutkinnon_laajuus , ' ' AS Opintojen_aloituspaiva ,CASE WHEN H.SukupuoliID = 1 THEN 'M' WHEN H.SukupuoliID = 2 THEN 'N' END AS Sukupuoli , ' ' AS keskeyttamisen_ilmoittaja , GETDATE() ,(SELECT substring(substring(OROT.Organisaatio_nimi,1,20) ,1,20) FROM Yhteiset.Koodistot.Organisaatio_Oppilaitostyyppi OROT JOIN Yhteiset.Asetukset.Instanssit I ON I.OrganisaatioKoodi = OROT.Organisaatio_koodi WHERE I.DB = @mydb AND OROT.Oppilaitostyyppi_koodi IN (41,42) ) AS organisaatio , NULL --EO.kela_tutkinnon_taso , NULL --EO.tilastokeskuksen_koulutuskoodi , @mydb AS kk , EO.opiskelijaAvain AS opiskelijaAvain , EO.opiskeluOikeusAvain AS opiskeluOikeusAvain FROM virta.dbo.Henkilo H INNER JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.ID JOIN #kela_tutkinto_final EO ON EO.opiskelijaid = O.ID INNER JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID LEFT JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID INNER JOIN virta.dbo.Opiskeluoikeuden_tyyppi OT ON OT.ID = OO.Op_oikeuden_tyyppiID WHERE OO.ID IN (SELECT ooid AS ID FROM #KELA_aktiivinen) AND H.db = @mydb AND O.db = @mydb AND OO.db = @mydb AND L.db = @mydb AND O.ID NOT IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE lukukausi = 'S') AND O.ID IN (SELECT oid AS ID FROM #KELA_lasnaolo WHERE tila_koodi IN (2,3) AND lukukausi = 'K') AND LEN(LTRIM(H.Henkilotunnus))> 7 AND EO.kela_opinto_koodi IS NOT NULL DROP TABLE #KELA_lasnaolo DROP TABLE #KELA_aktiivinen DROP TABLE #ensisijaisuus DROP TABLE #opiskelu_oikeudet_yo DROP TABLE #kela_tutkinto DROP TABLE #tutkinnot_johon_valittu DROP TABLE #kela_tutkinto_final
Päättely jos on sekä läsnä ja poissa, läsnäolo tieto ensisijaisesti. Jos useampi sama läsnä-/poissaolo, yksi läsnä-/poissaolo (L-rivi) riittää.
DECLARE @mydb varchar(20) /* Korkeakoulu lyhenne Virrassa esim @mydb = 'HY' */ /* Vain läsnäolo jos on myös poissaolo */ DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND opiskeluoikeus_ID IN (SELECT opiskeluoikeus_ID FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' AND kevatlukukausi = 'L' ) AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'P' AND kevatlukukausi = 'P' ) AND syyslukukausi = 'P') /* Vain läsnäolo jos on myös poissaolo */ DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND opiskeluoikeus_ID IN (SELECT opiskeluoikeus_ID FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' ) AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = ' ' ) AND syyslukukausi = ' ') /* Vain yksi poissaolo riittää */ DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND opiskeluoikeus_ID IN ( SELECT opiskeluoikeus_ID FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'P' AND kevatlukukausi = 'P' ) AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'P' AND kevatlukukausi = 'L' ) AND kevatlukukausi = 'L') /* Vain yksi läsnäolo riittää */ DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND opiskeluoikeus_ID IN ( SELECT opiskeluoikeus_ID FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' AND kevatlukukausi = 'L' ) AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' AND kevatlukukausi = ' ' ) AND kevatlukukausi = ' ') /* Vain läsnäolo jos on myös poissaolo */ DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND opiskeluoikeus_ID IN ( SELECT opiskeluoikeus_ID FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' AND kevatlukukausi = ' ' ) AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'P' AND kevatlukukausi = 'L' ) AND syyslukukausi = 'P') /* Vain läsnäolo jos on myös poissaolo */ DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND opiskeluoikeus_ID IN ( SELECT opiskeluoikeus_ID FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' AND kevatlukukausi = 'L' ) AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'P' AND kevatlukukausi = 'L' ) AND syyslukukausi = 'P') /* Vain yksi läsnäolo riittää */ DELETE FROM KELA_opiskelutiedot WHERE kk = @mydb AND opiskeluoikeus_ID IN ( SELECT opiskeluoikeus_ID FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' AND kevatlukukausi = 'L' ) AND henkilotunnus IN (SELECT henkilotunnus FROM KELA_opiskelutiedot WHERE kk = @mydb AND tapahtumakoodi = 'L' AND syyslukukausi = 'L' AND kevatlukukausi = 'P' ) AND kevatlukukausi = 'P')