Opintojen edistymisen seurannan aikataulu, syksy 2016 ja kevät 2017

Samankaltaiset tiedostot
55 op laskennan poimintakuvaus

Opiskeluoikeuksien maaran tiedonkeruu

Virta_Latausraportti - Tarkistukset

Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut

Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut

Tilastokeskuksen opiskelijatiedonkeruu yliopistot

Tilastokeskuksen opiskelijatiedonkeruu ammattikorkeakoulut

Virta-tietovarannosta saatavien tietojen tiedosto- ja tietuekuvaus alkaen

VIRTA-KELA-tiedonsiirrot

Tilastokeskuksen tutkintotiedonkeruu yliopistot

Oppilaitoksilta saatavien opiskelutietojen tiedostojen alkutietueen tietuekuvaus

Opintopistetiedonkeruu

Nykyiset tiedonkeruut tietovarannosta

KOTA-seminaari, Helsinki 2018 VIRTA-OTP Tiedonkeruut Tavoiteajassa tutkinnon suorittaneet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Oppilaitoksilta saatavien opiskelutietojen tiedostojen alkutietueen tietuekuvaus

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

SQL - STRUCTURED QUERY LANGUAGE

Korkeakoulujen KOTA-seminaari

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Edistymisen seurannan muutokset 2018 lukien. VIRTA-yhteyshenkilöiden kokous Hanna Nisula

OHJE OPISKELUOIKEUDEN PURKAMISESTA PASSIIVIREKISTERISTÄ

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

VIRTA-tiedon laadun tukeminen

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Yliopistoista saatavien tietojen tiedosto- ja tietuekuvaus

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Näkökulmia Diploma Supplementiin /Päivi Aho

HELIA 1 (14) Outi Virkki Tiedonhallinta

KOTA-AMKOTA-seminaari

KOTA-AMKOTA -seminaari

CSE-A1200 Tietokannat

OUTER JOIN se vanha kunnon kaveri

Kyselyn yleisrakenne:

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

VIRTA tiedonsiirtotavan kehittäminen - Eräsiirrosta inkrementaaliseen tiedonsiirtoon

VIRTA-tietomallin laajentaminen - Lukuvuosi-maksu

Korkeakoulujen KOTA-seminaari

Jatko-opinto oikeuden lisääminen HY:n tutkinto-opiskelijoille ja uusille opiskelijoille

OHJE OPINTO-OIKEUDEN PURKAMISESTA PASSIIVIREKISTERISTÄ

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

Liitokset - haut useaan tauluun

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

HYVÄKSILUETTUJEN SUORITUSTEN REKISTERÖIMINEN

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Korkeakoulujen KOTA-seminaari, Jyväskylä

Koulutus- ja opetusyhteistyö ja VIRTA-tiedot

HYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ

Julkaistu Helsingissä 11 päivänä huhtikuuta /2011 Valtioneuvoston asetus. opintotukiasetuksen muuttamisesta

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

KOTA-AMKOTA -seminaari

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

SELECT-lauseen perusmuoto

HYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

Opiskeluoikeudet. Kaaviokuva

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

3. Taulujen määrittely ja muuttaminen

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Uusi tutkintoasetus 2004 ja opinto-oikeuden käsittely

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Uusi tutkintoasetus 2004 ja opinto-oikeuden käsittely

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Valitse Opinto-oikeudet

Suorituksen sisältyminen toiseen suoritukseen (jonka id)

Tilastokeskuksen opiskelija- ja tutkintotiedonkeruut. Anna Loukkola Korkeakoulujen KOTA seminaari

Valtioneuvoston asetus

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

OPH Ammatillisen koulutuksen tietovarantoon tallennettavat henkilökohtaisen osaamisen kehittämissuunnitelman (HOKS) tiedot

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Opintosuoritukset. Kaaviokuva

INSERT INTO koulutus VALUES ( Helsinki, 22.6, 4);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Opiskelijoiden tuonti.

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

T Testiraportti TR-3. ETL-työkalu

Tilastokeskuksen opiskelija- ja tutkintotiedonkeruut. Jukka Jalolahti Korkeakoulujen KOTA seminaari

Lohdutus - tietokantadokumentti

HENKILÖKOHTAISEN OSAAMISEN KEHITTÄMISSUUNNITELMAN TIETOSISÄLTÖ JA KÄSITTEISTÖ ( ) Käsitteet ja selitteet

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Kirjaudu KAMKin käyttäjätunnuksilla osoitteessa

Opiskelija siirtyy suorittamaan ammatillisen perustutkinnon loppuun oppisopimuskoulutuksena (2+1 malli)

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Aiemmin tehdyt opinnot Miten eteenpäin?

KOSKI - Opintosuoritukset ja opiskeluoikeudet kootusti valtakunnalliseen palveluun /08/2018 Opetushallitus 2

Vain valitut kentät: SELECT Päivämäärä, Laskutusnimi, [ale mk], Loppusumma FROM Laskuotsikot

Transkriptio:

Kela Opiskelijatiedot (kuukausitiedot Edistymisenseuranta Opintojen edistymisen seurannan aikataulu, syksy 2016 ja kevät 2017 Tärkeät päivämäärät Ennakkopyyntötiedosto toimitettu CSC:lle 16.8.2016. Tarkistusajot klo 01 03 joka yö ( 17.8 13.9.2016 Kela lähettää varsinaisen pyyntötiedoston 13.9.2016. Ylimääräinen tarkistusajo heti tiedoston saavuttua + normaali joka yö tarkistusajo klo 01 03 Korjatut tiedot pitää tuoda Virtaan 19.9.2016 klo 24 mennessä! Vastaustiedosto ajetaan Virrasta ja lähetetään Kelalle 21.9.2016 klo 12 mennessä. Tiedot jotka toimitetaan vastaustiedostossa ovat korkeakoulun Sxxxx.txt-tiedoston mukaiset tiedot Takaisinperinnän tarpeellisuus tutkittava tiedosto CSC:lle 17.2.2017 kello 12 jälkeen (CSC ilmoittaa korkeakouluille, kun tiedostot ovat noudettavissa sft-palvelimen KELA-kansiosta Koko syksyn 2016 edistymisen seurannan aikataulu Kelan tiedonsiirto - tietojen poiminnat Virrasta Edistymisenseuranta Opiskelijatiedot (kuukausitiedot Edistymisenseuranta Kelan pyyntötiedosto www.kela.fi/documents/10180/1151585/tkuvaovkk.pdf/ aloituspäivämäärä. täydennetään pyydetyillä tiedoilla (opintopisteet, Opintopisteet lasketaan suorituspäivämäärän mukaan. Opintojen aikana suoritetut hyväksiluvut lasketaan mukaan edistymisen seurannassa. Esim. Jos edistymisen seurannan piirissä olevat opinnot ovat alkaneet 25.8.2014, ei tuota päivää ennen tehtyjä suorituksia(suorituspvm (hyväksilukuja saisi ilmoittaa edistymisen seurannassa. Sen sijaan jos hyväksiluettavat opinnot on suoritettu esimerkiksi 31.5.2015, olisi se ilmoitettava edistymisen seurannan opintosuorituksissa. Siirto-opiskelijoiden pisteet Aikaisemmassa korkeakoulussa suoritetut pisteet tulevat mukaan laskentaan, mikäli ovat tiedossa, suorituspäivämäärän mukaan. Aloituspäivämääräksi tulee opiskeluloikeuden alkuperäinen aloituspäivämäärä. Kelan tietuekuvauksen "opintopisteet1" (koko opiskeluaikana suoritettujen ja tutkintoon hyväksytty: "siirto-opiskelijoille jätetään tyhjäksi, jos aikaisemmassa korkeakoulussa suoritetut pisteet eivät ole vielä tiedossa" Virran tarkistustiedostot

Edistymisen seurannan tarkistustiedostot ajetaan joka yö VIRTASFTP\KORKEAKOULU\kela hakemistoon: (12345=oppilaitosnro S12345_tyhja_pyyntotiedosto.txt - Tyhjä Kelan tietuemallin mukainen jota voi käyttää vertailuun entiseen tapaan omista järjestelmistä S12345.txt - Virrasta tiedoilla täydennetty pyyntötiedosto, eli pisteet, alarajapäivämäärä loki_kela_edistseuranta_korkeakoulu.txt - Sisältää korkeakoulukohtaisen tiedon minkä tiedonsiirtoajankohdan mukaan op laskettu KELA_edistymisen_tarkistustiedosto_S12345.csv - Sama sisältö kuin S12345.txt csv-muodossa + Opiskeilijan Virta- "opiskelijaavain" "opiskeluoikeusavain" lisätiedot KELA_edistymisen_kadonneet_tarkistustiedosto_12345.csv - Tämä tiedosto puuttuu mikäli "kadonneita" ei ole, eli tarkoittaa että opiskelijaa ei löydy Virrasta pyyntötiedoston mukaisesti kyseisestä korkeakoulun tiedoista Tärkeitä tarkistettavia tietoja ovat: - "000" "000" pisteet ja alhaiset pisteet/tukikuukaudet (pisteet koko opiskeluaikana ja seurantalukuvuosi - Alarajapäivä (opiskelujen aloituspäivämäärä Jos useampi opiskeluoikeus, pitäisi olla viimeisin ennen 31.7.(kuluva vuosi aloitettu. Päivittymättömät tiedot (alkuperäinen poimintapäivämäärä sekä pistetiedot tyhjät ja opintojen aloituspäivämäärää puuttuu Läsnäolotietojen merkitys opintojen edistymisen seurannassa Opintojen aloituspäivä ( Alarajapäivä ilmoitetaan sen lukukauden mukaisesti jolloin opiskelija on ollut 1. kerran läsnäoleva. Jos opiskelijalla on opiskeluoikeus kahteen tai useampaan tutkintoon, opintojen aloituspäivä ja suoritustiedot ilmoitetaan sen opiskeluoikeuden mukaan missä opinnoissa opiskelija on ollut läsnäoleva seurantalukuvuonna (viimeiseksi aloitetun opiskeluoikeuden mukaan, järjestyksessä perustutkinto, jatkotutkinto, muu opintotukeen oikeuttava opiskeluoikeus. Jos opiskelija on ollut läsnä oleva kahdessa tai useammissa opinnoissa (AMK, opintojen aloituspäivä ja suoritustiedot ilmoitetaan sen opiskeluoikeuden mukaan missä opinnoissa opiskelijalla on enemmän suorituksia (opiskelijan etu. Jos seurantalukuvuonna on läsnäolo opintoihin jotka on aloitettu kevätlukukaudella ilmoitetaan ko. opintojen aloituspäivä ja suoritukset (opiskelijalta ei vaadita vähimmäissuoritusvaatimusta vähintään (20 opintopisteen opintoja 1. lukuvuodelta Tietojen poimintasäännöt Tuodaan pyyntötiedoston data omaan tauluun:

kela_edistymisen_tiedot CREATE TABLE [kela_edistymisen_tiedot]( [rivinro] [int] NOT NULL, [siirtotunnus] [varchar](15 NOT NULL, [poimintapaiva] [varchar](8 NOT NULL, [siirtolaji] [varchar](5 NOT NULL, [lahettajatunn] [varchar](2 NOT NULL, [oppilaitos] [varchar](5 NOT NULL, [koulutusala] [varchar](3 NOT NULL, [henkilotunnus] [varchar](11 NOT NULL, [sukunimi] [varchar](30 NOT NULL, [etunimet] [varchar](30 NOT NULL, [ylarajapaiva] [varchar](8 NOT NULL, [kuukaudet] [varchar](3 NOT NULL Expand source Pyyntötiedoston mahdolliset korkeakoulun tiedoista ei löydetyt opiskelijat viedään vastaavaan omaan tauluun. Alkuperäiset rivinro talteen. Jos ei henkilöä löydy viedä sama rivi muuttumattomana pyyntötiedostoon. Haetaan täydennettävät tiedot (opintopisteet, aloituspäivämäärä ja tallennetaan tauluun: kela_opintopisteet Expand CREATE TABLE [kela_opintopisteet]( source [rivinro] [int] NOT NULL, [henkilotunnus] [varchar](11 NOT NULL, [alarajapaiva] [varchar](8 NOT NULL, [opintopisteet1] [varchar](3 NOT NULL, [opintopisteet2] [varchar](3 NOT NULL, [db] [varchar](8 NOT NULL, [regdatum] [smalldatetime] NULL CONSTRAINT [DF_kela_opintopisteet_regdatum] DEFAULT (getdate(, [alarajapaiva_pvm] [date] NULL, [opintopisteet1_num] [int] NULL, [opintopisteet2_num] [int] NULL, [opiskelijaavain] [varchar](100 NULL, [opiskeluoikeusavain] [varchar](100 NULL Täydennettävät tiedot, opintopisteet ja aloituspäivämäärä: Opintosuoritukset -- Täydennetään tiedot kela_opintopisteet tauluun DECLARE @db varchar(20 = @korkeakoulu Expand source CREATE TABLE #orgkoodi ( orgkoodi varchar(8

INSERT INTO #orgkoodi (orgkoodi EXEC sp_get_organisaatio @db CREATE TABLE #muuttujat ( db varchar(8, maximi int, minimi int, oppilaitostyyppi int INSERT INTO #muuttujat(db,maximi,minimi,oppilaitostyyppi SELECT YI.DB, max(et.rivinro AS maximi, min(et.rivinro AS minimi, YO.Oppilaitostyyppi_koodi FROM [Yhteiset].[Asetukset].[Instanssit] YI JOIN [Yhteiset].[Koodistot].[Organisaatio_Oppilaitostyyppi] YO ON YI.OrganisaatioKoodi = YO.Organisaatio_koodi JOIN kela_edistymisen_tiedot ET ON ET.siirtotunnus = 'S'+YI.[OrganisaatioKoodi] WHERE YO.Oppilaitostyyppi_koodi IN (41,42 --amk 41 yo 42 GROUP BY YI.DB,YO.Oppilaitostyyppi_koodi DECLARE @max_rivinro int DECLARE @min_rivinro int DECLARE @kk_tyyppi int SELECT @max_rivinro = maximi FROM #muuttujat WHERE db=@db SELECT @min_rivinro = minimi FROM #muuttujat WHERE db=@db SELECT @kk_tyyppi = Oppilaitostyyppi FROM #muuttujat WHERE db=@db CREATE TABLE #pisteet ( opiskelija_id int not null, opiskeluoikeus_id int, opintosuoritus_id int not null, laajuus float not null, suoritus_pvm date not null, db varchar(20 -- Pyyntötiedostosta löydettyjen hetujen mukaan, alkuperäisen rivien mukaan CREATE TABLE #tkopisk ( rivinro int, kk varchar(12,-- korkeakoulu ht varchar(11,--henkilötunnus kirtu date,--kirjoihintulopvm sp varchar(1,--sukupuoli snimi nvarchar(255,--sukunimi enimi nvarchar(255,--etunimet opevuosi float, --yhteensä viime lukuvuonna (1.8.2015-31.7.2016 opeyhteensa float, opoik date,--opiskeluoikeuden alkaminen nykyisessä tutkinnossa koulk varchar(6,--koulutuskoodi opiskelijaavain varchar(100,

opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int, aloituspvm varchar(10, -- KELA alarajapäivä string aloituspvm_datum date -- Milloin aloittanut, nk. alarajapvm KELAlle CREATE TABLE #Aloittanut ( oid int, minalkamispaivamaara date, LAlkamispaivamaara date, OAlkamispaivamaara date, opiskelija_id int not null -- Milloin aloittanut, nk. alarajapvm KELAlle CREATE TABLE #Aloittanut_bak ( oid int, minalkamispaivamaara date, LAlkamispaivamaara date, OAlkamispaivamaara date, opiskelija_id int not null CREATE TABLE #Min_aloituspvm_bak ( oid int, alk_pvm date -- Uutta _bak temppitaulut CREATE TABLE #Min_aloituspvm ( oid int, alk_pvm date CREATE TABLE #Min_aloituspvm_siirto ( oid int, alk_pvm date -- YO Yliopistot IF ( @kk_tyyppi = 42 BEGIN INSERT into #tkopisk (rivinro, kk, ht, sp, snimi, enimi, kirtu, opiskelijaavain, opiskelija_id SELECT ke.rivinro AS rivinro, kk = @db,ht = h.henkilotunnus,sp = (select top 1 k.koodi FROM Sukupuoli k WHERE k.id=h.sukupuoliid,snimi = h.sukunimi,enimi = h.etunimet

,kirtu = p.kirjoihintulopaivamaara,opiskelijaavain = p.avain,opiskelija_id = p.id FROM Henkilo h JOIN dbo.opiskelija p on p.henkiloid = h.id JOIN kela_edistymisen_tiedot Ke ON h.henkilotunnus = Ke.henkilotunnus WHERE 1=1 AND h.db = @db AND p.db = @db AND ke.rivinro >= @min_rivinro -- Pienin rivinro AND Ke.rivinro <= @max_rivinro -- Pitää hakea organisaatio mukaisen suurin rivinro -- tutkinto-oikeus AND p.id IN ( select o.opiskelijaid FROM Opiskeluoikeus o inner join Opiskeluoikeuden_tyyppi ot on ot.id=o.op_oikeuden_tyyppiid WHERE 1=1 AND o.db = @db -- tutkinto-tyyppinen YO AND ot.koodi in ('2','4','5','6','7','11','14','18' TRUNCATE TABLE #Aloittanut INSERT INTO #Aloittanut (oid, minalkamispaivamaara, LAlkamispaivamaara, OAlkamispaivamaara,opiskelija_id SELECT oo.id, CASE WHEN MIN(L.Alkamispaivamaara >= OO.Alkamispaivamaara THEN MIN(L.Alkamispaivamaara ELSE OO.Alkamispaivamaara AS minalkamispaivamaara,l.alkamispaivamaara AS LAlkamispaivamaara,oo.Alkamispaivamaara AS OAlkamispaivamaara,o.id FROM dbo.henkilo H JOIN dbo.opiskelija O ON O.HenkiloID = H.ID JOIN dbo.opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN Opiskeluoikeuden_tyyppi ot on ot.id=oo.op_oikeuden_tyyppiid LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID JOIN dbo.lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID INNER JOIN Op_oikeuteen_liittyva_tila olt ON olt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=olt.op_oikeuden_tilaid WHERE LT.Koodi = 1 /* Läsnä */

AND ot.koodi IN ('2','4','5','6','7','11','14','18' AND H.Henkilotunnus IN (SELECT ht FROM #tkopisk AND oo.db = @db AND o.db = @db AND h.db = @db AND kt.koodi = '1' --aktiivinen AND ('2015-08-01' between olt.alkamispaivamaara and coalesce(olt.paattymispaivamaara,'9999-01-01' -- AND oo.id in ( SELECT oe.opiskeluoikeusid FROM Op_oikeuden_ensisijaisuus oe WHERE ('2015-08-01' between oe.alkamispaivamaara and coalesce(oe.paattymispaivamaara,'9999-01-01' AND oe.db = @db -- Ei vanhoja mukaan -- 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 WHERE OO.Paattymispaivamaara < '2015-08-01' AND H.db = @db AND O.db = @db AND OO.db = @db AND OO.ID NOT IN ( SELECT DISTINCT OO1.ID H1 O1 ON O1.HenkiloID = H1.ID Opiskeluoikeus OO1 ON OO1.OpiskelijaID = O1.ID Op_oikeuteen_liittyva_tila OOT1 ON OO1.ID = OOT1.OpiskeluoikeusID Opiskeluoikeuden_tila OT1 ON OT1.ID = OOT1.Op_oikeuden_tilaID = @db = @db = @db IN ( 3,4, 5 /* Päättynyt jotenkin */ OOT1.Alkamispaivamaara <= '2015-08-01' FROM Henkilo JOIN Opiskelija JOIN JOIN JOIN WHERE h1.db AND o1.db AND oo1.db AND OT1.Koodi AND GROUP BY L.Alkamispaivamaara, oo.alkamispaivamaara, oo.id, o.id

TRUNCATE TABLE #Aloittanut_bak INSERT INTO #Aloittanut_bak (oid, minalkamispaivamaara, LAlkamispaivamaara, OAlkamispaivamaara,opiskelija_id SELECT oo.id,case WHEN MIN(L.Alkamispaivamaara >= OO.Alkamispaivamaara THEN MIN(L.Alkamispaivamaara ELSE OO.Alkamispaivamaara AS minalkamispaivamaara,l.alkamispaivamaara AS LAlkamispaivamaara,oo.Alkamispaivamaara AS OAlkamispaivamaara,o.id FROM dbo.henkilo H JOIN dbo.opiskelija O ON O.HenkiloID = H.ID JOIN dbo.opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN Opiskeluoikeuden_tyyppi ot on ot.id=oo.op_oikeuden_tyyppiid LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID JOIN dbo.lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID INNER JOIN Op_oikeuteen_liittyva_tila olt ON olt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=olt.op_oikeuden_tilaid WHERE LT.Koodi = 1 /* Läsnä */ AND ot.koodi IN ('2','4','5','6','7','11','14','18' AND H.Henkilotunnus IN (SELECT ht FROM #tkopisk AND oo.db = @db AND o.db = @db AND h.db = @db AND kt.koodi = '1' --aktiivinen AND ('2015-08-01' between olt.alkamispaivamaara and coalesce(olt.paattymispaivamaara,'9999-01-01' = O.ID '2015-08-01' 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 WHERE OO.Paattymispaivamaara < AND H.db = @db AND O.db = @db AND OO.db = @db O1.HenkiloID = H1.ID AND OO.ID NOT IN ( SELECT DISTINCT OO1.ID OO1 ON OO1.OpiskelijaID = O1.ID FROM Henkilo H1 JOIN Opiskelija O1 ON JOIN Opiskeluoikeus JOIN

Op_oikeuteen_liittyva_tila OOT1 ON OO1.ID = OOT1.OpiskeluoikeusID JOIN Opiskeluoikeuden_tila OT1 ON OT1.ID = OOT1.Op_oikeuden_tilaID WHERE @db @db = @db 3,4, 5 /* Päättynyt jotenkin */ OOT1.Alkamispaivamaara <= '2015-08-01' GROUP BY L.Alkamispaivamaara, oo.alkamispaivamaara, oo.id, o.id h1.db = AND o1.db = AND oo1.db AND OT1.Koodi IN ( AND INSERT INTO #Min_aloituspvm (oid, alk_pvm SELECT oid, MIN(minAlkamispaivamaara As alk_pvm FROM #Aloittanut GROUP BY oid INSERT INTO #Min_aloituspvm_bak (oid, alk_pvm SELECT oid, MIN(minAlkamispaivamaara As alk_pvm FROM #Aloittanut_bak GROUP BY oid UPDATE T SET aloituspvm = convert(varchar(12,m.alk_pvm,104, aloituspvm_datum = M.alk_pvm FROM #tkopisk T INNER JOIN Opiskeluoikeus o on o.opiskelijaid=t.opiskelija_id INNER JOIN Opiskeluoikeuden_tyyppi ot on ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid INNER JOIN #Min_aloituspvm M ON o.id=m.oid WHERE 1=1 AND o.db = @db AND lt.db = @db -- tutkinto-tyyppinen YO AND ot.koodi in ('2','4','5','6','7','11','14','18' -- voimassa pvm AND ('2015-08-01' between o.alkamispaivamaara and coalesce(o.paattymispaivamaara,'9999-01-01' -- tila -- NB Katsotaan nyt vain aktiivinen (ei päättynyt. Riski on juuri 1.8. tutkinnon suorittaneet -- ehkä?

AND kt.koodi = '1' --aktiivinen AND ('2015-08-01' between lt.alkamispaivamaara and coalesce(lt.paattymispaivamaara,'9999-01-01' -- ensisijainen pvm -- and o.id in ( select oe.opiskeluoikeusid FROM Op_oikeuden_ensisijaisuus oe WHERE ('2015-08-01' between oe.alkamispaivamaara and coalesce(oe.paattymispaivamaara,'9999-01-01' AND oe.db = @db O.ID -- Ei vanhoja mukaan -- AND o.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 = WHERE OO.Paattymispaivamaara < '2015-08-01' AND H.db = @db AND O.db = @db AND OO.db = @db -- valitaan yksi per opiskelija UPDATE T SET opiskeluoikeus_id=o.id, opiskeluoikeusavain=o.avain, opoik= o.alkamispaivamaara FROM #tkopisk T inner join Opiskeluoikeus o on o.opiskelijaid=t.opiskelija_id inner join Opiskeluoikeuden_tyyppi ot on ot.id=o.op_oikeuden_tyyppiid inner join Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=o.id inner join Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 AND o.db = @db AND lt.db = @db -- tutkinto-tyyppinen and ot.koodi in ('2','4','5','6','7','11','14','18' -- voimassa pvm and ('2015-08-01' between o.alkamispaivamaara and coalesce(o.paattymispaivamaara,'9999-01-01' -- tila and kt.koodi = '1' --aktiivinen and ('2015-08-01' between lt.alkamispaivamaara and coalesce(lt.paattymispaivamaara,'9999-01-01' -- ensisijainen pvm -- and o.id in ( select oe.opiskeluoikeusid FROM Op_oikeuden_ensisijaisuus oe WHERE ('2015-08-01' between oe.alkamispaivamaara and coalesce(oe.paattymispaivamaara,'9999-01-01' AND oe.db = @db

IF EXISTS (SELECT * FROM #tkopisk T WHERE T.aloituspvm IS NULL BEGIN UPDATE T SET aloituspvm = convert(varchar(12,m.alk_pvm,104, aloituspvm_datum = M.alk_pvm FROM #tkopisk T INNER JOIN Opiskeluoikeus o on o.opiskelijaid=t.opiskelija_id INNER JOIN Opiskeluoikeuden_tyyppi ot on ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid INNER JOIN #Min_aloituspvm_bak M ON o.id=m.oid WHERE 1=1 AND T.aloituspvm IS NULL AND o.db = @db AND lt.db = @db -- tutkinto-tyyppinen YO AND ot.koodi in ('2','4','5','6','7','11','14','18' -- voimassa pvm AND ('2015-08-01' between o.alkamispaivamaara and coalesce(o.paattymispaivamaara,'9999-01-01' -- tila -- NB Katsotaan nyt vain aktiivinen (ei päättynyt. Riski on juuri 1.8. tutkinnon suorittaneet -- ehkä? AND kt.koodi = '1' --aktiivinen AND ('2015-08-01' between lt.alkamispaivamaara and coalesce(lt.paattymispaivamaara,'9999-01-01' = H.ID OO.OpiskelijaID = O.ID '2015-08-01' -- Ei vanhoja mukaan -- AND o.id NOT IN ( SELECT DISTINCT OO.ID FROM Henkilo H LEFT JOIN Opiskelija O ON O.HenkiloID LEFT JOIN Opiskeluoikeus OO ON WHERE OO.Paattymispaivamaara < AND H.db = @db AND O.db = @db AND OO.db = @db

UPDATE T SET T.opoik=kirtu FROM #tkopisk T WHERE T.opiskeluoikeus_id is null UPDATE T set T.aloituspvm = convert(varchar(12,kirtu,104, T.aloituspvm_datum = kirtu FROM #tkopisk T WHERE T.aloituspvm IS NULL UPDATE T SET T.aloituspvm = convert(varchar(12, T.opoik,104,T.aloituspvm_datum = T.opoik FROM #tkopisk T WHERE T.opoik > T.aloituspvm_datum INSERT INTO #pisteet (opiskelija_id,opiskeluoikeus_id,opintosuoritus_id,laajuus,suoritus_pvm,db SELECT opiskelija_id = s.opiskelijaid,opiskeluoikeus_id = s.opiskeluoikeusid,opintosuoritus_id = s.id,laajuus = s.laajuus,suoritus_pvm = s.suorituspaivamaara, @db AS db FROM Opintosuoritus s inner join Opintosuorituksen_laji sl on sl.id=s.opintosuorituksen_lajiid and sl.koodi IN ('2','3' --muu opintosuoritus WHERE 1=1 AND s.db = @db -- lehtitaso and s.id not in (select ss.opintosuoritusid FROM Op_suor_sisaltyvyys ss WHERE ss.db = @db -- AND s.id NOT IN (SELECT OH.OpintosuoritusID FROM Opsuorituksen_hyvaksiluku OH WHERE OH.db = @db -- UPDATE T SET opevuosi = ( SELECT sum(laajuus FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id AND s.suoritus_pvm >= '2015-08-01' AND s.suoritus_pvm

<= '2016-07-31' FROM #tkopisk T -- UPDATE T SET opeyhteensa= ( s.suoritus_pvm <= '2016-07-31' AND s.suoritus_pvm >= T.aloituspvm_datum GROUP BY s.opiskelija_id SELECT sum(laajuus FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id AND s.suoritus_pvm >= T.aloituspvm_datum AND GROUP BY s.opiskelija_id FROM #tkopisk T UPDATE T set opevuosi = 0 FROM #tkopisk T WHERE opevuosi is null UPDATE T set opeyhteensa = 0 FROM #tkopisk T WHERE opeyhteensa is null -- LOPPUTULOS DELETE FROM kela_opintopisteet WHERE db = @db INSERT INTO kela_opintopisteet(rivinro,henkilotunnus,alarajapaiva,opintopisteet1,opintopisteet2,db,alarajapaiva_pvm,opintopisteet1_num,opintopisteet2_num, opiskelijaavain, opiskeluoikeusavain SELECT rivinro, ISNULL(ht,'' "henkilotunnus" -- (ht, ISNULL(replace(aloituspvm,'.','',' ' "alarajapaiva" -- 8 tyhjää jos ei arvoa, right('000' + ISNULL(cast(ceiling(opeyhteensa as varchar(3,'', 3 AS opintopisteet1, right('000' + ISNULL(cast(ceiling(opevuosi as varchar(3,'', 3 AS opintopisteet2, ISNULL(kk,'' as db -- (kk, aloituspvm_datum AS alarajapaiva_pvm, ceiling(opeyhteensa AS opintopisteet1_num, ceiling(opevuosi AS opintopisteet2_num, opiskelijaavain, opiskeluoikeusavain FROM #tkopisk T ORDER BY rivinro --

====================================================================================== ========================== -- AMK Ammattikorkeakoulu IF ( @kk_tyyppi = 41 BEGIN TRUNCATE TABLE #tkopisk INSERT into #tkopisk (rivinro, kk, ht, sp, snimi, enimi, kirtu, opiskelijaavain, opiskelija_id SELECT DISTINCT ke.rivinro AS rivinro, kk = @db,ht = h.henkilotunnus,sp = (select top 1 k.koodi FROM Sukupuoli k WHERE k.id=h.sukupuoliid,snimi = h.sukunimi,enimi = h.etunimet,kirtu = p.kirjoihintulopaivamaara,opiskelijaavain = p.avain,opiskelija_id = p.id FROM Henkilo h JOIN dbo.opiskelija p on p.henkiloid=h.id JOIN kela_edistymisen_tiedot Ke ON h.henkilotunnus = Ke.henkilotunnus WHERE 1=1 AND h.db = @db AND p.db = @db AND ke.rivinro >= @min_rivinro -- Pienin rivinro AND Ke.rivinro <= @max_rivinro -- Pitää hakea organisaatio mukaisen suurin rivinro -- tutkinto-oikeus, erikoistumisopinnot ja ammatillinen opettajakoulutus AND p.id in ( select o.opiskelijaid FROM Opiskeluoikeus o inner join Opiskeluoikeuden_tyyppi ot on ot.id=o.op_oikeuden_tyyppiid WHERE 1=1 AND o.db = @db ammatillinen opettajakoulutus AND ('1','3','10','12','15','17','19' -- tutkinto-tyyppinen, erikoistumisopinnot ja ot.koodi IN TRUNCATE TABLE #Aloittanut INSERT INTO #Aloittanut (oid, minalkamispaivamaara, LAlkamispaivamaara, OAlkamispaivamaara,opiskelija_id SELECT oo.id, CASE WHEN MIN(L.Alkamispaivamaara >= OO.Alkamispaivamaara THEN MIN(L.Alkamispaivamaara ELSE OO.Alkamispaivamaara AS minalkamispaivamaara

,l.alkamispaivamaara AS LAlkamispaivamaara,oo.Alkamispaivamaara AS OAlkamispaivamaara, o.id 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 ot on ot.id=oo.op_oikeuden_tyyppiid 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ä */ AND ot.koodi IN ('1','3','10','12','15','17','19' AND h.db = @db AND o.db = @db AND oo.db = @db AND L.db = @db AND H.Henkilotunnus IN (SELECT ht FROM #tkopisk AND oo.alkamispaivamaara <= '2016-07-31' AND L.Alkamispaivamaara <= '2016-07-31' O2.ID -- Ei vanhoja mukaan -- AND oo.id NOT IN ( SELECT DISTINCT OO2.ID FROM Henkilo H2 LEFT JOIN Opiskelija O2 ON O2.HenkiloID = H2.ID LEFT JOIN Opiskeluoikeus OO2 ON OO2.OpiskelijaID = WHERE OO2.Paattymispaivamaara < '2015-08-01' AND h2.db = @db AND o2.db = @db AND oo2.db = @db O1.ID AND OO.ID NOT IN ( SELECT DISTINCT OO1.ID FROM Henkilo H1 JOIN Opiskelija O1 ON O1.HenkiloID = H1.ID JOIN Opiskeluoikeus OO1 ON OO1.OpiskelijaID = OO1.ID = OOT1.OpiskeluoikeusID OOT1.Op_oikeuden_tilaID JOIN Op_oikeuteen_liittyva_tila OOT1 ON JOIN Opiskeluoikeuden_tila OT1 ON OT1.ID = WHERE h1.db = @db AND o1.db = @db AND oo1.db = @db jotenkin */ '2015-08-01' AND OT1.Koodi IN ( 3, 5 /* Päättynyt AND OOT1.Alkamispaivamaara <=

/* Pitää olla läsnäoleva että saadaan oikea opiskeluoikeus ja sen aloituspvm */ AND oo.id IN ( SELECT OpiskeluoikeusID AS id FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt ON lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi='1' --läsnäolo tältä ajalta AND l.db = @db --AND l.alkamispaivamaara >= '2015-08-01' AND l.paattymispaivamaara <= '2016-07-31' GROUP BY L.Alkamispaivamaara, oo.alkamispaivamaara, oo.id, o.id TRUNCATE TABLE #Min_aloituspvm INSERT INTO #Min_aloituspvm (oid, alk_pvm SELECT oid, MIN(minAlkamispaivamaara As alk_pvm FROM #Aloittanut GROUP BY oid INSERT INTO #Min_aloituspvm_siirto (oid, alk_pvm SELECT MA.oid, CASE WHEN MA.alk_pvm >= OO.Siirtopaivamaara THEN OO.Siirtopaivamaara ELSE MA.alk_pvm AS alk_pvm FROM #Min_aloituspvm MA JOIN VIRTA.dbo.Opiskeluoikeus OO ON MA.oid = OO.id WHERE OO.Alkamispaivamaara <= '2016-07-31' UPDATE #Min_aloituspvm SET alk_pvm = MT.alk_pvm FROM #Min_aloituspvm_siirto MT WHERE #Min_aloituspvm.oid = MT.oid UPDATE T SET opiskeluoikeus_id = o.id, opiskeluoikeusavain = o.avain, opoik= o.alkamispaivamaara, aloituspvm = convert(varchar(12, M.alk_pvm,104, aloituspvm_datum = M.alk_pvm FROM #tkopisk T join Opiskeluoikeus o on o.opiskelijaid=t.opiskelija_id join #Min_aloituspvm M ON M.oid = o.id

WHERE o.db = @db UPDATE T set T.opoik=kirtu FROM #tkopisk T WHERE T.opiskeluoikeus_id is null UPDATE T set T.aloituspvm = convert(varchar(12,kirtu,104, T.aloituspvm_datum = kirtu FROM #tkopisk T WHERE T.aloituspvm IS NULL UPDATE T SET T.aloituspvm = convert(varchar(12, T.opoik,104,T.aloituspvm_datum = T.opoik FROM #tkopisk T WHERE T.opoik > T.aloituspvm_datum INSERT INTO #pisteet (opiskelija_id,opiskeluoikeus_id,opintosuoritus_id,laajuus,suoritus_pvm,db SELECT opiskelija_id = s.opiskelijaid,opiskeluoikeus_id = s.opiskeluoikeusid,opintosuoritus_id = s.id,laajuus = s.laajuus,suoritus_pvm = s.suorituspaivamaara, @db AS db FROM Opintosuoritus s inner join Opintosuorituksen_laji sl on sl.id=s.opintosuorituksen_lajiid and sl.koodi IN ('2','3' --muu opintosuoritus WHERE 1=1 AND s.db = @db AND s.id not in (select ss.opintosuoritusid FROM Op_suor_sisaltyvyys ss WHERE ss.db = @db <= '2016-07-31' UPDATE T SET opevuosi = ( SELECT sum(laajuus FROM #pisteet s WHERE s.opiskeluoikeus_id=t.opiskeluoikeus_id AND s.suoritus_pvm >= '2015-08-01' AND s.suoritus_pvm AND s.suoritus_pvm >= T.aloituspvm_datum GROUP BY s.opiskeluoikeus_id

FROM #tkopisk T UPDATE T SET opeyhteensa= ( s.suoritus_pvm <= '2016-07-31' SELECT sum(laajuus FROM #pisteet s WHERE s.opiskeluoikeus_id=t.opiskeluoikeus_id AND s.suoritus_pvm >= T.aloituspvm_datum AND GROUP BY s.opiskeluoikeus_id FROM #tkopisk T -- <= '2016-07-31' UPDATE T SET opevuosi = ( SELECT sum(laajuus FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id AND s.suoritus_pvm >= '2015-08-01' AND s.suoritus_pvm AND s.suoritus_pvm >= T.aloituspvm_datum GROUP BY s.opiskelija_id FROM #tkopisk T --WHERE T.opiskeluoikeus_id IS NULL WHERE (T.opevuosi = 0 OR T.opevuosi is null UPDATE T SET opeyhteensa= ( s.suoritus_pvm <= '2016-07-31' SELECT sum(laajuus FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id AND s.suoritus_pvm >= T.aloituspvm_datum AND GROUP BY s.opiskelija_id FROM #tkopisk T --WHERE T.opiskeluoikeus_id IS NULL WHERE (T.opeyhteensa = 0 OR T.opeyhteensa is null -- UPDATE T set opevuosi = 0 FROM #tkopisk T WHERE opevuosi is null UPDATE T set opeyhteensa = 0 FROM #tkopisk T WHERE opeyhteensa is null --

-- Mitä tulikaan tehtyä? Lokitetaanpas vähän INSERT INTO kela_loki( hetu,opiskelijaid,opiskeluoikeusid,viesti,rivi,db,reg_datum SELECT ht, opiskelija_id, opiskeluoikeus_id, 'opiskeluavain NULL poistettu' AS viesti, rivinro, kk, getdate( As reg_datum FROM #tkopisk WHERE opiskeluoikeusavain IS NULL -- Poistetaanko kaikki ilman opiskelusoikeusavainta? Miksi ei ole avainta? DELETE FROM #tkopisk WHERE opiskeluoikeusavain IS NULL -- On useampi opiskeluoikeus CREATE TABLE #kela_tuplat ( ht varchar(15, opiskeluoikeus_id int, opevuosi float, opeyhteensa float, aloituspvm_datum date -- Haetaan tuplat INSERT INTO #kela_tuplat (ht, opiskeluoikeus_id, opevuosi, opeyhteensa, aloituspvm_datum SELECT ht, opiskeluoikeus_id, opevuosi, opeyhteensa, aloituspvm_datum FROM #tkopisk WHERE ht IN (SELECT ht FROM #tkopisk GROUP BY ht HAVING count(* > 1 -- Viimeisin alkanut opiskeluoikeus CREATE TABLE #kela_viimeisin_alkpvm ( henkilotunnus varchar(11 NOT NULL, db varchar(8 NOT NULL, viimeisin_alkpvm date -- Vain tuplat having count(* > 1 INSERT INTO #kela_viimeisin_alkpvm (henkilotunnus, db, viimeisin_alkpvm SELECT ht AS henkilotunnus, kk AS db, max(aloituspvm_datum AS viimeisin_alkpvm FROM #tkopisk WHERE aloituspvm_datum IS NOT NULL GROUP BY ht, kk HAVING count(* > 1 -- Poistettavat opiskeluoikeudet CREATE TABLE #kela_poistettavat ( opiskeluoikeus_id int INSERT INTO #kela_poistettavat (opiskeluoikeus_id SELECT opiskeluoikeus_id FROM #kela_tuplat KT JOIN #kela_viimeisin_alkpvm KA ON KA.henkilotunnus = KT.ht WHERE KT.aloituspvm_datum < KA.viimeisin_alkpvm ORDER BY KT.ht -- Mitkä poistetaan lokitetaan INSERT INTO kela_loki( hetu,opiskelijaid,opiskeluoikeusid,viesti,rivi,db,reg_datum SELECT ht, opiskelija_id, opiskeluoikeus_id, 'tuplat vanhempi oikeusid poistettu ' + cast( aloituspvm_datum as varchar(20 AS viesti, rivinro, kk,

getdate( As reg_datum FROM #tkopisk WHERE opiskeluoikeus_id IN (SELECT opiskeluoikeus_id FROM #kela_poistettavat -- Poistetaan DELETE FROM #tkopisk WHERE opiskeluoikeus_id IN (SELECT opiskeluoikeus_id FROM #kela_poistettavat uudestaan -- Vielä onko tuplia joilla sama alkupvm, poistetaan vanhat ja haetaan TRUNCATE TABLE #kela_tuplat TRUNCATE TABLE #kela_poistettavat -- Vain tuplat having count(* > 1 INSERT INTO #kela_tuplat (ht, opiskeluoikeus_id, opevuosi, opeyhteensa, aloituspvm_datum SELECT ht, opiskeluoikeus_id, opevuosi, opeyhteensa, aloituspvm_datum FROM #tkopisk WHERE ht IN (SELECT ht FROM #tkopisk GROUP BY ht HAVING count(* > 1 NULL, CREATE TABLE #kela_enemman_opevuosi ( henkilotunnus varchar(11 NOT db varchar(8 NOT NULL, more_opevuosi float -- Enemmän pisteitä Vain tuplat having count(* > 1 INSERT INTO #kela_enemman_opevuosi (henkilotunnus, db, more_opevuosi SELECT ht AS henkilotunnus, kk AS db, max(opevuosi AS more_opevuosi FROM #tkopisk WHERE aloituspvm_datum IS NOT NULL GROUP BY ht, kk HAVING count(* > 1 INSERT INTO #kela_poistettavat (opiskeluoikeus_id SELECT opiskeluoikeus_id FROM #kela_tuplat KT JOIN #kela_enemman_opevuosi KA ON KA.henkilotunnus = KT.ht WHERE KT.opevuosi < KA.more_opevuosi ORDER BY KT.ht -- Lokitetaan mitkä poistettiin INSERT INTO kela_loki( hetu,opiskelijaid,opiskeluoikeusid,viesti,rivi,db,reg_datum SELECT ht, opiskelija_id, opiskeluoikeus_id, 'tuplat vähemmän pisteitä oikeusid poistettu ' + cast( opevuosi as varchar(10 AS viesti, rivinro, kk, getdate( As reg_datum FROM #tkopisk WHERE opiskeluoikeus_id IN (SELECT opiskeluoikeus_id FROM #kela_poistettavat -- Poistetaan tuplat joilla vähemmän pisteitä DELETE FROM #tkopisk WHERE opiskeluoikeus_id IN (SELECT opiskeluoikeus_id FROM #kela_poistettavat -- LOPPUTULOS DELETE FROM kela_opintopisteet WHERE db = @db

INSERT INTO kela_opintopisteet(rivinro,henkilotunnus,alarajapaiva,opintopisteet1,opintopisteet2,db,alarajapaiva_pvm,opintopisteet1_num,opintopisteet2_num, opiskelijaavain, opiskeluoikeusavain SELECT rivinro, ISNULL(ht,'' "henkilotunnus" -- (ht, ISNULL(replace(aloituspvm,'.','',' ' "alarajapaiva" -- 8 tyhjää jos ei arvoa, right('000' + ISNULL(cast(ceiling(opeyhteensa as varchar(3,'', 3 AS opintopisteet1, right('000' + ISNULL(cast(ceiling(opevuosi as varchar(3,'', 3 AS opintopisteet2, ISNULL(kk,'' as db -- (kk, aloituspvm_datum AS alarajapaiva_pvm, ceiling(opeyhteensa AS opintopisteet1_num, ceiling(opevuosi AS opintopisteet2_num, opiskelijaavain, opiskeluoikeusavain FROM #tkopisk T ORDER BY rivinro DROP TABLE #kela_tuplat DROP TABLE #kela_viimeisin_alkpvm DROP TABLE #kela_poistettavat DROP TABLE #kela_enemman_opevuosi -- Otetaan kadonneet talteen INSERT INTO [kela_lost_souls] (rivinro,siirtotunnus,poimintapaiva,siirtolaji,lahettajatunn,oppilaitos,koulutusala,he nkilotunnus,sukunimi,etunimet,ylarajapaiva,kuukaudet, kk, reg_datum SELECT rivinro,siirtotunnus,poimintapaiva,siirtolaji,lahettajatunn,oppilaitos,koulutusala,hen kilotunnus,sukunimi,etunimet,ylarajapaiva,kuukaudet, @db, getdate( FROM kela_edistymisen_tiedot WHERE oppilaitos = (SELECT orgkoodi FROM #orgkoodi AND henkilotunnus NOT IN (SELECT ht FROM #tkopisk DROP TABLE #muuttujat DROP TABLE #tkopisk DROP TABLE #Aloittanut DROP TABLE #Aloittanut_bak DROP TABLE #Min_aloituspvm DROP TABLE #Min_aloituspvm_bak DROP TABLE #pisteet DROP TABLE #Min_aloituspvm_siirto DROP TABLE #orgkoodi

Lopputulos Kela tietuemallin mukainen ja csv-tarkistustiedosto jossa OpiskelijaAvain ja OpiskeluOikeusAvain tiedot: Lopputulos Expand SELECT ke.siirtotunnus source,'t' AS tietuetyyppi, replace(convert(varchar(12,getdate(,104,'.','' AS poimintapaiva,ke.siirtolaji,ke.lahettajatunn,ke.oppilaitos,ke.koulutusala,ke.henkilotunnus,ke.sukunimi,ke.etunimet,ko.alarajapaiva,ke.ylarajapaiva,ko.opintopisteet1,ko.opintopisteet2,ke.kuukaudet,ko.rivinro FROM [kela_opintopisteet] ko JOIN [kela_edistymisen_tiedot] ke ON ke.rivinro = ko.rivinro WHERE ko.db = @korkeakoulu UNION SELECT ks.siirtotunnus,'t' AS tietuetyyppi,ks.poimintapaiva,ks.siirtolaji,ks.lahettajatunn,ks.oppilaitos,ks.koulutusala,ks.henkilotunnus,ks.sukunimi,ks.etunimet,' ' AS alarajapaiva,ks.ylarajapaiva,' ' AS opintopisteet1,' ' AS opintopisteet2,ks.kuukaudet,ks.rivinro FROM [kela_lost_souls] ks WHERE ks.kk = @korkeakoulu ORDER BY rivinro --CSV-tarkistustiedostoon opiskelijaavain ja opiskeluoikeusavain SELECT ke.siirtotunnus,'t' AS tietuetyyppi, replace(convert(varchar(12,getdate(,104,'.','' AS poimintapaiva

,ke.siirtolaji,ke.lahettajatunn,ke.oppilaitos,ke.koulutusala,ke.henkilotunnus,ke.sukunimi,ke.etunimet,ko.alarajapaiva,ke.ylarajapaiva,ko.opintopisteet1,ko.opintopisteet2,ke.kuukaudet,ko.rivinro,ko.opiskelijaavain,ko.opiskeluoikeusavain FROM [kela_opintopisteet] ko JOIN [kela_edistymisen_tiedot] ke ON ke.rivinro = ko.rivinro WHERE ko.db = @mydb UNION SELECT ks.siirtotunnus,'t' AS tietuetyyppi,ks.poimintapaiva,ks.siirtolaji,ks.lahettajatunn,ks.oppilaitos,ks.koulutusala,ks.henkilotunnus,ks.sukunimi,ks.etunimet,' ' AS alarajapaiva,ks.ylarajapaiva,' ' AS opintopisteet1,' ' AS opintopisteet2,ks.kuukaudet,ks.rivinro,'' AS opiskelijaavain,'' AS opiskeluoikeusavain FROM [kela_lost_souls] ks WHERE ks.kk = @mydb ORDER BY rivinro

Opiskelijatiedot Ammattikorkeakoulujen tiedot Yliopistojen tiedot Kelan tietuekuvaukset Korkeakouluista lähetetään Kelalle kuukausittain noin 20:s päivä (tarkemmin päivämäärät Kelan ilmoittamien aikataulujen mukaan peräkkäistiedosto joka sisältää opiskelutietoja (läsnä/poissaolot kyseiselle lukuvuodelle, valmistumistiedot (suoritettu tutkinto tai ei-tutkintoonjohtavan päättyneet opinnot, opintojen keskeytykset (AMK. Korkeakoulut lähettävät opiskelijatiedot Kelan OPAS-järjestelmän kautta Poimintaskriptit ovat tässä vaiheessa vielä kehitysvaiheessa ja päivitetään sitä mukaan kun muutoksia 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. Syksy Kevät 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

AMK tutkinnon suorittaneet DECLARE @YEAR varchar(4 = '2015' DECLARE @Syys_alk date SET @Syys_alk = @YEAR+'-08-01' Expand source 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' 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' 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' 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 Opinnot loppuun suorittaneet - Ei tutkintoon johtava koulutus /* Versio 1 Opiskeluoikeuden tila päättynyt (3 alkamispvm = päättymispäivämäärä */ source 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 Expand 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' 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' 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' 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'' 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'' 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''

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. Läsnä-Poissa AMK 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 Expand source /* 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 */ Uudestaan aktiivi */ AND OO.ID NOT IN ( SELECT oid AS id FROM #reactivated /* 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 */