...
Code Block | ||||
---|---|---|---|---|
| ||||
-- CIMO_lyhyt_saapuva: DECLARE @vuosi varchar(4) SET @vuosi = '2016' create table #param ( vuosi varchar(4), ) ; insert into #param (vuosi) select @vuosi as vuosi ; -- Temp-taulu tiedonkeruun tietoja varten create table #cimopisk ( oppilaitos varchar(5), -- Oppilaitoskoodi hetu varchar(100), --henkilö- tai muu tunnus sp varchar(1), -- sukupuoli koulutusala varchar(4), -- koulutusala opintoaste varchar(1), -- (vain YO) lahtomaa varchar(3), kesto varchar(4), --liikkuvuuden kesto koultyp varchar(1), --koulutuksen tyyppi (vain AMK) tyyppi varchar(2), --liikkuvuuden tyyppi -- jakso_alkupvm date, jakso_loppupvm date, koulutuskoodi varchar(6), -- opiskelijaavain varchar(100), liikkuvuusjaksoavain varchar(100), opiskeluoikeusavain varchar(100), opiskelija_id int, liikkuvuusjakso_id int, opiskeluoikeus_id int ) ; CREATE NONCLUSTERED INDEX IX_cimopisk_opiskelija_id ON #cimopisk (opiskelija_id) CREATE NONCLUSTERED INDEX IX_cimopisk_liikkuvuusjakso_id ON #cimopisk (liikkuvuusjakso_id) CREATE NONCLUSTERED INDEX IX_cimopisk_opiskeluoikeus_id ON #cimopisk (opiskeluoikeus_id) ; print convert(varchar,getdate(),120)+' CREATE temp-taulu param ja cimopisk' ; --- -- Lisätään perustiedot (henkilö, opiskelija) -- * täytyy olla liikkuvuusjakso joka on -- - jonka (liikkuvuuden )suunta on 2=Saapuva -- - kestänyt enintään [5,7] ja vähintään 86 (87-1) päivää -- * jakson aloituspäivämäärän vuosi on tilastovuosi --- INSERT into #cimopisk ( -- kaikki sarakkeet (kopioitavaksi) oppilaitos,hetu,sp,koulutusala,opintoaste,lahtomaa,kesto,koultyp,tyyppi ,jakso_alkupvm,jakso_loppupvm,koulutuskoodi ,opiskelijaavain,liikkuvuusjaksoavain,opiskeluoikeusavain,opiskelija_id,liikkuvuusjakso_id,opiskeluoikeus_id ) SELECT DISTINCT oppilaitos = (select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB=h.DB) ,hetu = h.Henkilotunnus ,sp = (select top 1 k.Koodi from virta.dbo.Sukupuoli k where k.ID=h.SukupuoliID) ,koulutusala = null ,opintoaste = null ,lahtomaa = (select top 1 k.Koodi from virta.dbo.Maa k where k.ID=lj.MaaID) ,kesto = cast(coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) as varchar) +1 -- alku- ja loppupvm kuuluu mukaan ,koultyp = null ,tyyppi = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_tyyppi k where k.ID=lj.Liikkuvuuden_tyyppiID) -- ,jakso_alkupvm = lj.Alkamispaivamaara ,jakso_loppupvm = lj.Paattymispaivamaara ,koulutuskoodi = null -- ,opiskelijaavain = p.Avain ,liikkuvuusjaksoavain = lj.Avain ,opiskeluoikeusavain = (select avain from virta.dbo.Opiskeluoikeus where ID=lj.OpiskeluoikeusID) ,opiskelija_id = p.ID ,liikkuvuusjakso_id = lj.ID ,opiskeluoikeus_id = lj.OpiskeluoikeusID -- voi olla null! FROM virta.dbo.Henkilo h inner join virta.dbo.Opiskelija p on p.HenkiloID=h.ID inner join virta.dbo.Liikkuvuusjakso lj on lj.OpiskelijaID=p.ID inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = lj.OpiskelijaID inner join virta.dbo.Opiskeluoikeuden_tyyppi otk on otk.ID = OO.Op_oikeuden_tyyppiID -- KV vaihto tyyppi , Ei Liikkuvuusjakson opiskeluoikeustyyppi WHERE 1=1 AND otk.koodi = '9' -- Kansainvälinen vaihto -- suunta 2=Saapuva and 2 = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_suunta k where k.ID=lj.Liikkuvuuden_suuntaID) -- enintään [5,7] ja vähintään 86 päivää and coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) +1 -- alku- ja loppupvm kuuluu mukaan between 5 and 86 -- tilastovuosi and year(lj.Alkamispaivamaara) = (select vuosi from #param) -- Saapuva jolla on myös tutkinto-oikeus on double degree? AND p.id NOT IN ( SELECT OO2.opiskelijaid FROM virta.dbo.Opiskeluoikeus OO2 inner join virta.dbo.Opiskeluoikeuden_tyyppi otk2 on otk2.ID = OO2.Op_oikeuden_tyyppiID INNER JOIN virta.dbo.Opiskeluoikeusjakso OJ2 on OJ2.OpiskeluoikeusID=OO2.id WHERE otk2.koodi IN ('1','2','3','4','5','6','7','14','15','19') AND lj.Alkamispaivamaara BETWEEN OO2.Alkamispaivamaara AND COALESCE(OO2.Paattymispaivamaara, @vuosi + '-12-31') and year(lj.Alkamispaivamaara) = (select vuosi from #param) ) ; print convert(varchar,getdate(),120)+' liikkuvuus- ja opiskelijatiedot' ; -- Lyhyt saapuva ilman opiskeluoikeutta INSERT into #cimopisk ( oppilaitos,hetu,sp,koulutusala,opintoaste,lahtomaa,kesto,koultyp,tyyppi ,jakso_alkupvm,jakso_loppupvm,koulutuskoodi ,opiskelijaavain,liikkuvuusjaksoavain,opiskeluoikeusavain,opiskelija_id,liikkuvuusjakso_id,opiskeluoikeus_id ) SELECT DISTINCT oppilaitos = (select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB=h.DB) ,hetu = h.Henkilotunnus ,sp = (select top 1 k.Koodi from virta.dbo.Sukupuoli k where k.ID=h.SukupuoliID) ,koulutusala = null ,opintoaste = null ,lahtomaa = (select top 1 k.Koodi from virta.dbo.Maa k where k.ID=lj.MaaID) ,kesto = cast(coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) as varchar) +1 -- alku- ja loppupvm kuuluu mukaan ,koultyp = null ,tyyppi = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_tyyppi k where k.ID=lj.Liikkuvuuden_tyyppiID) -- ,jakso_alkupvm = lj.Alkamispaivamaara ,jakso_loppupvm = lj.Paattymispaivamaara ,koulutuskoodi = null -- ,opiskelijaavain = p.Avain ,liikkuvuusjaksoavain = lj.Avain ,opiskeluoikeusavain = (select avain from virta.dbo.Opiskeluoikeus where ID=lj.OpiskeluoikeusID) ,opiskelija_id = p.ID ,liikkuvuusjakso_id = lj.ID ,opiskeluoikeus_id = lj.OpiskeluoikeusID -- voi olla null! FROM virta.dbo.Henkilo h inner join virta.dbo.Opiskelija p on p.HenkiloID=h.ID inner join virta.dbo.Liikkuvuusjakso lj on lj.OpiskelijaID=p.ID WHERE p.ID NOT IN (SELECT C.opiskelija_id FROM #cimopisk C) -- suunta 2=Saapuva and 2 = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_suunta k where k.ID=lj.Liikkuvuuden_suuntaID) -- enintään [5,7] ja vähintään 86 päivää and coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) +1 -- alku- ja loppupvm kuuluu mukaan between 5 and 86 -- tilastovuosi and year(lj.Alkamispaivamaara) = (select vuosi from #param) -- Saapuva jolla on myös tutkinto-oikeus on double degree? AND p.id NOT IN ( SELECT OO2.opiskelijaid FROM virta.dbo.Opiskeluoikeus OO2 inner join virta.dbo.Opiskeluoikeuden_tyyppi otk2 on otk2.ID = OO2.Op_oikeuden_tyyppiID INNER JOIN virta.dbo.Opiskeluoikeusjakso OJ2 on OJ2.OpiskeluoikeusID=OO2.id WHERE otk2.koodi IN ('1','2','3','4','5','6','7','14','15','19') AND lj.Alkamispaivamaara BETWEEN OO2.Alkamispaivamaara AND COALESCE(OO2.Paattymispaivamaara, @vuosi + '-12-31') and year(lj.Alkamispaivamaara) = (select vuosi from #param) ) ; --- -- Opiskeluoikeustiedot --- /* koulutusala varchar(4), -- koulutusala // OKMOhjausala opintoaste varchar(1), -- (vain YO) // 1, 2 tai 3 // Opiskeluoikeus.Tyyppi 2,4,6,7 koultyp varchar(1), --koulutuksen tyyppi (vain AMK) // 1,2, tai 6 // OpiskeluoikeusTyyppi 1,3 */ -- valitaan yksi per opiskelija, jos ei löytynyt jo ID yllä! update T set opiskeluoikeus_id=o.ID, opiskeluoikeusavain=o.avain from #cimopisk T inner join virta.dbo.Opiskeluoikeus o on o.OpiskelijaID=T.opiskelija_id inner join virta.dbo.Op_oikeuden_ensisijaisuus oe on oe.OpiskeluoikeusID=o.ID where 1=1 -- ensisijainen alkamispäivänä and T.jakso_alkupvm between oe.Alkamispaivamaara and coalesce(oe.Paattymispaivamaara,'9999-9-9') ; -- koulutuskoodi update T set koulutuskoodi=(select k.Koodi from virta.dbo.Tutkintonimike k where k.ID=oj.TutkintonimikeID) from #cimopisk T inner join virta.dbo.Opiskeluoikeusjakso oj on oj.OpiskeluoikeusID=T.opiskeluoikeus_id where T.opiskeluoikeus_id is not null -- jakso voimassa alkupäivänä and T.jakso_alkupvm between oj.Alkamispaivamaara and coalesce(oj.Paattymispaivamaara,'9999-01-01') ; -- koulutusala -- nb! OKM:n ohjauksen ala update T set koulutusala=k.Koodi from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID =T.opiskelija_id inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = L.OpiskelijaID AND OO.ID = T.opiskeluoikeus_id inner join virta.dbo.Koulutusala K ON K.id = OO.KoulutusalaID where T.opiskeluoikeus_id is not null AND T.opiskelija_id is not null AND K.Versio = 'ohjausala' ; update T set koulutusala=k.Koodi from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID =T.opiskelija_id inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = L.OpiskelijaID inner join virta.dbo.Koulutusala K ON K.id = OO.KoulutusalaID where T.koulutusala is null AND T.opiskelija_id is not null AND K.Versio = 'ohjausala' ; -- opintoaste, koultyp update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1' then '1' -- Ammattikorkeakoulututkinto when '3' then '6' -- Ylempi ammattikorkeakoulututkinto end ) from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L on L.OpiskelijaID = T.opiskelija_id inner join virta.dbo.opiskeluoikeus OO ON T.opiskeluoikeus_id = OO.id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk on otk.ID = L.Opiskeluoikeuden_tyyppiID where T.opiskeluoikeus_id is not null AND T.opiskeluoikeusAvain = OO.avain AND L.avain = T.liikkuvuusjaksoavain ; -- Jos opintoaste on null edellisen jälkeen update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1' then '1' -- Ammattikorkeakoulututkinto when '3' then '6' -- Ylempi ammattikorkeakoulututkinto end ) from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID = T.opiskelija_id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk ON otk.ID = L.Opiskeluoikeuden_tyyppiID where T.opintoaste is null AND T.opiskeluoikeus_id is null ; -- Jos koultyp on null edellisen jälkeen, ei pitäisi vaikuttaa yliopistoihin mikäli ei ole väärällä tyypillä tuotu update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1' then '1' -- Ammattikorkeakoulututkinto when '3' then '6' -- Ylempi ammattikorkeakoulututkinto end ) from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID = T.opiskelija_id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk ON otk.ID = L.Opiskeluoikeuden_tyyppiID where T.koultyp is null AND T.opiskeluoikeus_id is null ; --- -- TULOS --- select * from #cimopisk T order by hetu |
Kerätään kaikki opiskeluoikeudet tyyppiä liikkuvuusjaksot joiden opiskeluoikeus tyyppi on 9 (=Kansainvälinen vaihto) tauluun #cimopisk: oppilaitos, hetu, sukupuoli, liikkuvuusohjelma, kansalaisuus, lähtömaa, liikkuvuuden kesto, liikkuvuuden tyyppi, liikkuvuuden alkamispvm, liikkuvuuden päättymispvm
...
Code Block | ||||
---|---|---|---|---|
| ||||
--CIMO_pitka_saapuva: DECLARE @vuosi varchar(4) SET @vuosi = '2016' create table #param ( vuosi varchar(4), ) ; insert into #param (vuosi) select @vuosi as vuosi ; -- Temp-taulu tiedonkeruun tietoja varten create table #cimopisk ( oppilaitos varchar(5), -- Oppilaitoskoodi hetu varchar(100), --henkilö- tai muu tunnus sp varchar(1), -- sukupuoli koulutusala varchar(4), -- koulutusala opintoaste varchar(1), -- (vain YO) liikkuvuusohjelma varchar(3), kansalaisuus varchar(3), lahtomaa varchar(3), kesto varchar(4), --liikkuvuuden kesto koultyp varchar(1), --koulutuksen tyyppi (vain AMK) tyyppi varchar(2), --liikkuvuuden tyyppi -- jakso_alkupvm date, jakso_loppupvm date, koulutuskoodi varchar(6), -- opiskelijaavain varchar(100), liikkuvuusjaksoavain varchar(100), opiskeluoikeusavain varchar(100), opiskelija_id int, liikkuvuusjakso_id int, opiskeluoikeus_id int ) ; CREATE NONCLUSTERED INDEX IX_cimopisk_opiskelija_id ON #cimopisk (opiskelija_id) CREATE NONCLUSTERED INDEX IX_cimopisk_liikkuvuusjakso_id ON #cimopisk (liikkuvuusjakso_id) CREATE NONCLUSTERED INDEX IX_cimopisk_opiskeluoikeus_id ON #cimopisk (opiskeluoikeus_id) ; print convert(varchar,getdate(),120)+' CREATE temp-taulu param ja cimopisk' ; --- -- Lisätään perustiedot (henkilö, opiskelija) -- * täytyy olla liikkuvuusjakso joka on -- - jonka (liikkuvuuden )suunta on 2=Saapuva -- - kestänyt vähintään 87 päivää -- * jakson aloituspäivämäärän vuosi on tilastovuosi --- INSERT into #cimopisk ( -- kaikki sarakkeet (kopioitavaksi) oppilaitos,hetu,sp,koulutusala,opintoaste,liikkuvuusohjelma,kansalaisuus,lahtomaa,kesto,koultyp,tyyppi ,jakso_alkupvm,jakso_loppupvm,koulutuskoodi ,opiskelijaavain,liikkuvuusjaksoavain,opiskeluoikeusavain,opiskelija_id,liikkuvuusjakso_id,opiskeluoikeus_id ) SELECT DISTINCT oppilaitos = (select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB=h.DB) ,hetu = h.Henkilotunnus ,sp = (select top 1 k.Koodi from virta.dbo.Sukupuoli k where k.ID=h.SukupuoliID) ,koulutusala = null ,opintoaste = null ,liikkuvuusohjelma = (select top 1 k.Koodi from virta.dbo.Liikkuvuusohjelma k where k.ID=lj.LiikkuvuusohjelmaID) ,kansalaisuus = ( -- TODO: jos monta? select top 1 k.Koodi from virta.dbo.Henkilon_maa hm join virta.dbo.Maan_rooli mr on mr.ID=hm.Maan_rooliID and mr.Koodi='1'--Kansalaisuus join virta.dbo.Maa k on k.ID=hm.MaaID where hm.HenkiloID=h.ID ) ,lahtomaa = (select top 1 k.Koodi from virta.dbo.Maa k where k.ID=lj.MaaID) ,kesto = cast(coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) as varchar) +1 -- alku- ja loppupvm kuuluu mukaan ,koultyp = null ,tyyppi = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_tyyppi k where k.ID=lj.Liikkuvuuden_tyyppiID) -- ,jakso_alkupvm = lj.Alkamispaivamaara ,jakso_loppupvm = lj.Paattymispaivamaara ,koulutuskoodi = null -- ,opiskelijaavain = p.Avain ,liikkuvuusjaksoavain = lj.Avain ,opiskeluoikeusavain = (select avain from virta.dbo.Opiskeluoikeus where ID=lj.OpiskeluoikeusID) ,opiskelija_id = p.ID ,liikkuvuusjakso_id = lj.ID ,opiskeluoikeus_id = lj.OpiskeluoikeusID -- voi olla null! FROM virta.dbo.Henkilo h inner join virta.dbo.Opiskelija p on p.HenkiloID=h.ID inner join virta.dbo.Liikkuvuusjakso lj on lj.OpiskelijaID=p.ID inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = lj.OpiskelijaID INNER JOIN virta.dbo.Opiskeluoikeusjakso oj on oj.OpiskeluoikeusID=OO.id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk on otk.ID = OO.Op_oikeuden_tyyppiID -- KV vaihto tyyppi , Ei Liikkuvuusjakson opiskeluoikeustyyppi WHERE 1=1 AND otk.koodi = '9' -- Kansainvälinen vaihto -- suunta 2=Saapuva and 2 = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_suunta k where k.ID=lj.Liikkuvuuden_suuntaID) -- vähintään 87 päivää and 87 <= coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) +1 -- alku- ja loppupvm kuuluu mukaan -- tilastovuosi and year(lj.Alkamispaivamaara) = (select vuosi from #param) AND lj.Alkamispaivamaara BETWEEN oj.Alkamispaivamaara AND coalesce(oj.Paattymispaivamaara,'9999-01-01') -- Saapuva jolla on myös tutkinto-oikeus on double degree? AND p.id NOT IN ( SELECT OO2.opiskelijaid FROM virta.dbo.Opiskeluoikeus OO2 inner join virta.dbo.Opiskeluoikeuden_tyyppi otk2 on otk2.ID = OO2.Op_oikeuden_tyyppiID INNER JOIN virta.dbo.Opiskeluoikeusjakso OJ2 on OJ2.OpiskeluoikeusID=OO2.id WHERE otk2.koodi IN ('1','2','3','4','5','6','7','14','15','19') AND lj.Alkamispaivamaara BETWEEN OO2.Alkamispaivamaara AND COALESCE(OO2.Paattymispaivamaara, @vuosi + '-12-31') and year(lj.Alkamispaivamaara) = (select vuosi from #param) ) ; print convert(varchar,getdate(),120)+' liikkuvuus- ja opiskelijatiedot' ; -- Pitkä saapuva ilman opiskeluoikeutta INSERT into #cimopisk ( oppilaitos,hetu,sp,koulutusala,opintoaste,liikkuvuusohjelma,kansalaisuus,lahtomaa,kesto,koultyp,tyyppi ,jakso_alkupvm,jakso_loppupvm,koulutuskoodi ,opiskelijaavain,liikkuvuusjaksoavain,opiskeluoikeusavain,opiskelija_id,liikkuvuusjakso_id,opiskeluoikeus_id ) SELECT DISTINCT oppilaitos = (select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB=h.DB) ,hetu = h.Henkilotunnus ,sp = (select top 1 k.Koodi from virta.dbo.Sukupuoli k where k.ID=h.SukupuoliID) ,koulutusala = null ,opintoaste = null ,liikkuvuusohjelma = (select top 1 k.Koodi from virta.dbo.Liikkuvuusohjelma k where k.ID=lj.LiikkuvuusohjelmaID) ,kansalaisuus = ( -- TODO: jos monta? select top 1 k.Koodi from virta.dbo.Henkilon_maa hm join virta.dbo.Maan_rooli mr on mr.ID=hm.Maan_rooliID and mr.Koodi='1'--Kansalaisuus join virta.dbo.Maa k on k.ID=hm.MaaID where hm.HenkiloID=h.ID ) ,lahtomaa = (select top 1 k.Koodi from virta.dbo.Maa k where k.ID=lj.MaaID) ,kesto = cast(coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) as varchar) +1 -- alku- ja loppupvm kuuluu mukaan ,koultyp = null ,tyyppi = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_tyyppi k where k.ID=lj.Liikkuvuuden_tyyppiID) -- ,jakso_alkupvm = lj.Alkamispaivamaara ,jakso_loppupvm = lj.Paattymispaivamaara ,koulutuskoodi = null -- ,opiskelijaavain = p.Avain ,liikkuvuusjaksoavain = lj.Avain ,opiskeluoikeusavain = (select avain from virta.dbo.Opiskeluoikeus where ID=lj.OpiskeluoikeusID) ,opiskelija_id = p.ID ,liikkuvuusjakso_id = lj.ID ,opiskeluoikeus_id = lj.OpiskeluoikeusID -- voi olla null! FROM virta.dbo.Henkilo h inner join virta.dbo.Opiskelija p on p.HenkiloID=h.ID inner join virta.dbo.Liikkuvuusjakso lj on lj.OpiskelijaID=p.ID WHERE p.ID NOT IN (SELECT C.opiskelija_id FROM #cimopisk C) -- suunta 2=Saapuva and 2 = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_suunta k where k.ID=lj.Liikkuvuuden_suuntaID) -- vähintään 87 päivää and 87 <= coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) +1 -- alku- ja loppupvm kuuluu mukaan -- tilastovuosi and year(lj.Alkamispaivamaara) = (select vuosi from #param) -- Saapuva jolla on myös tutkinto-oikeus on double degree? AND p.id NOT IN ( SELECT OO2.opiskelijaid FROM virta.dbo.Opiskeluoikeus OO2 inner join virta.dbo.Opiskeluoikeuden_tyyppi otk2 on otk2.ID = OO2.Op_oikeuden_tyyppiID INNER JOIN virta.dbo.Opiskeluoikeusjakso OJ2 on OJ2.OpiskeluoikeusID=OO2.id WHERE otk2.koodi IN ('1','2','3','4','5','6','7','14','15','19') AND lj.Alkamispaivamaara BETWEEN OO2.Alkamispaivamaara AND COALESCE(OO2.Paattymispaivamaara, @vuosi + '-12-31') and year(lj.Alkamispaivamaara) = (select vuosi from #param) ) AND p.id NOT IN ( SELECT OO2.opiskelijaid FROM virta.dbo.Opiskeluoikeus OO2 INNER JOIN virta.dbo.Opiskeluoikeusjakso OJ2 on OJ2.OpiskeluoikeusID=OO2.id INNER JOIN virta.dbo.Op_oik_jaks_liittyva_luokittelu OL ON OL.OpiskeluoikeusjaksoID = OJ2.id INNER JOIN virta.dbo.Opiskeluoikeuden_luokittelu OOL ON OOL.id = OL.Opiskeluoikeuden_luokitteluID WHERE OOL.koodi = '7' AND OJ2.Alkamispaivamaara BETWEEN lj.Alkamispaivamaara AND COALESCE(OJ2.Paattymispaivamaara, @vuosi + '-12-31') and year(lj.Alkamispaivamaara) = (select vuosi from #param) ) ; --- -- Opiskeluoikeustiedot --- /* koulutusala varchar(4), -- koulutusala // OKMOhjausala opintoaste varchar(1), -- (vain YO) // 1, 2 tai 3 // Opiskeluoikeus.Tyyppi 2,4,6,7 koultyp varchar(1), --koulutuksen tyyppi (vain AMK) // 1,2, tai 6 // OpiskeluoikeusTyyppi 1,3 */ -- valitaan yksi per opiskelija, jos ei löytynyt jo ID yllä! update T set opiskeluoikeus_id=o.ID, opiskeluoikeusavain=o.avain from #cimopisk T inner join virta.dbo.Opiskeluoikeus o on o.OpiskelijaID=T.opiskelija_id inner join virta.dbo.Op_oikeuden_ensisijaisuus oe on oe.OpiskeluoikeusID=o.ID where 1=1 -- ensisijainen alkamispäivänä and T.jakso_alkupvm between oe.Alkamispaivamaara and coalesce(oe.Paattymispaivamaara,'9999-9-9') ; -- koulutuskoodi update T set koulutuskoodi=(select k.Koodi from virta.dbo.Tutkintonimike k where k.ID=oj.TutkintonimikeID) from #cimopisk T inner join virta.dbo.Opiskeluoikeusjakso oj on oj.OpiskeluoikeusID=T.opiskeluoikeus_id where T.opiskeluoikeus_id is not null -- jakso voimassa alkupäivänä and T.jakso_alkupvm between oj.Alkamispaivamaara and coalesce(oj.Paattymispaivamaara,'9999-01-01') ; -- koulutusala -- nb! OKM:n ohjauksen ala update T set koulutusala=K.Koodi from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID =T.opiskelija_id inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = L.OpiskelijaID AND OO.ID = T.opiskeluoikeus_id inner join virta.dbo.Koulutusala K ON K.id = OO.KoulutusalaID INNER JOIN virta.dbo.Opiskeluoikeusjakso oj on oj.OpiskeluoikeusID=OO.id where T.opiskeluoikeus_id is not null AND T.opiskelija_id is not null and T.jakso_alkupvm between oj.Alkamispaivamaara and coalesce(oj.Paattymispaivamaara,'9999-01-01') AND K.Versio = 'ohjausala' ; update T set koulutusala=K.Koodi from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID =T.opiskelija_id inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = L.OpiskelijaID inner join virta.dbo.Koulutusala K ON K.id = OO.KoulutusalaID where T.koulutusala IS NULL AND T.opiskelija_id is not null AND K.Versio = 'ohjausala' ; -- opintoaste, koultyp jos on opiskeluoikeusid ensisijaisen mukaan eli ei NULL update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1' then '1' -- Ammattikorkeakoulututkinto when '3' then '6' -- Ylempi ammattikorkeakoulututkinto end ) from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID = T.opiskelija_id inner join virta.dbo.opiskeluoikeus OO ON T.opiskeluoikeus_id = OO.id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk ON otk.ID = L.Opiskeluoikeuden_tyyppiID where T.opiskeluoikeus_id is not null AND T.opiskeluoikeusAvain = OO.avain AND L.avain = T.liikkuvuusjaksoavain ; -- Jos opintoaste on null edellisen jälkeen update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1' then '1' -- Ammattikorkeakoulututkinto when '3' then '6' -- Ylempi ammattikorkeakoulututkinto end ) from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID = T.opiskelija_id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk ON otk.ID = L.Opiskeluoikeuden_tyyppiID where T.opintoaste is null AND T.opiskeluoikeus_id is null ; -- Jos koultyp on null edellisen jälkeen, ei pitäisi vaikuttaa yliopistoihin mikäli ei ole väärällä tyypillä tuotu update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1' then '1' -- Ammattikorkeakoulututkinto when '3' then '6' -- Ylempi ammattikorkeakoulututkinto end ) from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID = T.opiskelija_id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk ON otk.ID = L.Opiskeluoikeuden_tyyppiID where T.koultyp is null AND T.opiskeluoikeus_id is null ; --- -- TULOS --- select * from #cimopisk T order by hetu ; |
Kerätään kaikki opiskeluoikeudet tyyppiä liikkuvuusjaksot joiden opiskeluoikeus tyyppi on 9(=Kansainvälinen vaihto ) tauluun #cimopisk: oppilaitos, hetu, sukupuoli, liikkuvuusohjelma, kansalaisuus, lähtömaa, liikkuvuuden kesto, liikkuvuuden tyyppi, liikkuvuuden alkamispvm, liikkuvuuden päättymispvm
Liikkuvuuden suunta 2 (=Saapuva)
Liikkuvusjaksot pituudeltaan >= 87 päivää.
Liikkuvusjakso alkamispäivämäärä tilastovuonna (jakson aloituspäivämäärän vuosi on tilastovuosi, nyt tilastovuosi 2016)
Saapuvalla opiskelijalla ei saa olla tutkintoon johtavaa opiskeluoikeutta saman aikaisesti liikkuvuusjakson kanssa ao. korkeakoulussa.Eikä erikoistumiskoulutus tai opettajakoulutus-oikeutta.
...
Haetaan ensin mukaan myös CIMO pitkä saapuva opiskeluoikeudet tyyppiä saapuva liikkuvuusjaksot joiden opiskeluoikeus tyyppi on 9 (=Kansainvälinen vaihto ) tauluun #cimopisk_pitka
Kerätään sen jälkeen kaikki opiskeluoikeudet tutkintoon johtavan tyyppiä ('1','2','3','4','6','7') tauluun #cimopisk: oppilaitos, hetu, sukupuoli, liikkuvuusohjelma, kohdemaa, liikkuvuuden kesto, liikkuvuuden tyyppi, liikkuvuuden alkamispvm, liikkuvuuden päättymispvm
Liikkuvuuden suunta 1 (=Lähtevä)
Liikkuvusjaksot pituudeltaan 5 - 86 päivää.
Liikkuvusjakso alkamispäivämäärä tilastovuonna (jakson aloituspäivämäärän vuosi on tilastovuosi, nyt tilastovuosi 2016)
...
Code Block | ||||
---|---|---|---|---|
| ||||
--CIMO_pitka_lahteva: DECLARE @vuosi varchar(4) SET @vuosi = '2016' create table #param ( vuosi varchar(4), ) ; insert into #param (vuosi) select @vuosi as vuosi ; --select * from #param -- Temp-taulu tiedonkeruun tietoja varten create table #cimopisk ( oppilaitos varchar(5), -- Oppilaitoskoodi // 5-numeroinen hetu varchar(100), --henkilö- tai muu tunnus vapaateksti // jollei henkilötunnusta löydy, käytetään Opiskelija.avain sp varchar(1), -- sukupuoli // 1, 2, tai 9 koulutusala varchar(4), -- koulutusala // OKMOhjausala opintoaste varchar(1), -- (vain YO) // 1, 2 tai 3 // Opiskeluoikeus.Tyyppi 2,4,6,7 liikkuvuusohjelma varchar(3), --// 01-16 tai 99 kohdemaa varchar(3), --// 000-999 kesto varchar(4), --liikkuvuuden kesto // päiviä // Vaihdon tulee olla kestänyt vähintään 87 päivää, jotta tulee poimituksi. Kokonaiskesto raportoidaan päivinä ja vaihdon aloituspäivämäärä määrä raportointivuoden. koultyp varchar(1), --koulutuksen tyyppi (vain AMK) // 1,2, tai 6 // OpiskeluoikeusTyyppi 1,3 tyyppi varchar(2), --liikkuvuuden tyyppi // 1, 2 -- jakso_alkupvm date, jakso_loppupvm date, koulutuskoodi varchar(6), -- opiskelijaavain varchar(100), liikkuvuusjaksoavain varchar(100), opiskeluoikeusavain varchar(100), opiskelija_id int, liikkuvuusjakso_id int, opiskeluoikeus_id int ) ; CREATE NONCLUSTERED INDEX IX_cimopisk_opiskelija_id ON #cimopisk (opiskelija_id) CREATE NONCLUSTERED INDEX IX_cimopisk_liikkuvuusjakso_id ON #cimopisk (liikkuvuusjakso_id) CREATE NONCLUSTERED INDEX IX_cimopisk_opiskeluoikeus_id ON #cimopisk (opiskeluoikeus_id) ; print convert(varchar,getdate(),120)+' CREATE temp-taulu param ja cimopisk' ; --- -- Lisätään perustiedot (henkilö, opiskelija) -- * täytyy olla liikkuvuusjakso joka on -- - jonka (liikkuvuuden )suunta on 1=Lähtevä -- - kestänyt vähintään 87 päivää -- * jakson aloituspäivämäärän vuosi on tilastovuosi --- INSERT into #cimopisk ( -- kaikki sarakkeet (kopioitavaksi) oppilaitos,hetu,sp,koulutusala,opintoaste,liikkuvuusohjelma,kohdemaa,kesto,koultyp,tyyppi ,jakso_alkupvm,jakso_loppupvm,koulutuskoodi ,opiskelijaavain,liikkuvuusjaksoavain,opiskeluoikeusavain,opiskelija_id,liikkuvuusjakso_id,opiskeluoikeus_id ) SELECT DISTINCT oppilaitos = (select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where DB=h.DB) ,hetu = h.Henkilotunnus ,sp = (select top 1 k.Koodi from virta.dbo.Sukupuoli k where k.ID=h.SukupuoliID) ,koulutusala = null ,opintoaste = null ,liikkuvuusohjelma = (select top 1 k.Koodi from virta.dbo.Liikkuvuusohjelma k where k.ID=lj.LiikkuvuusohjelmaID) ,kohdemaa = (select top 1 k.Koodi from virta.dbo.Maa k where k.ID=lj.MaaID) ,kesto = cast(coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) as varchar) +1 -- alku- ja loppupvm kuuluu mukaan ,koultyp = null ,tyyppi = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_tyyppi k where k.ID=lj.Liikkuvuuden_tyyppiID) -- ,jakso_alkupvm = lj.Alkamispaivamaara ,jakso_loppupvm = lj.Paattymispaivamaara ,koulutuskoodi = null -- ,opiskelijaavain = p.Avain ,liikkuvuusjaksoavain = lj.Avain ,opiskeluoikeusavain = (select avain from virta.dbo.Opiskeluoikeus where ID=lj.OpiskeluoikeusID) ,opiskelija_id = p.ID ,liikkuvuusjakso_id = lj.ID ,opiskeluoikeus_id = lj.OpiskeluoikeusID -- voi olla null! FROM virta.dbo.Henkilo h inner join virta.dbo.Opiskelija p on p.HenkiloID=h.ID inner join virta.dbo.Liikkuvuusjakso lj on lj.OpiskelijaID=p.ID WHERE 1=1 -- suunta 1=Lähtevä and 1 = (select top 1 k.Koodi from virta.dbo.Liikkuvuuden_suunta k where k.ID=lj.Liikkuvuuden_suuntaID) -- vähintään 87 päivää and 87 <= coalesce(DATEDIFF(day,lj.Alkamispaivamaara,lj.Paattymispaivamaara),9999) +1 -- alku- ja loppupvm kuuluu mukaan -- tilastovuosi and year(lj.Alkamispaivamaara) = (select vuosi from #param) -- Lähtevillä vain tutkinto ei muita AND p.id IN ( SELECT OO2.opiskelijaid FROM virta.dbo.Opiskeluoikeus OO2 inner join virta.dbo.Opiskeluoikeuden_tyyppi otk2 on otk2.ID = OO2.Op_oikeuden_tyyppiID INNER JOIN virta.dbo.Opiskeluoikeusjakso OJ2 on OJ2.OpiskeluoikeusID=OO2.id WHERE otk2.koodi IN ('1','2','3','4','6','7') AND lj.Alkamispaivamaara BETWEEN OO2.Alkamispaivamaara AND COALESCE(OO2.Paattymispaivamaara, @vuosi + '-12-31') and year(lj.Alkamispaivamaara) = (select vuosi from #param) ) ; print convert(varchar,getdate(),120)+' liikkuvuus- ja opiskelijatiedot' ; --- -- Opiskeluoikeustiedot --- /* koulutusala varchar(4), -- koulutusala // OKMOhjausala opintoaste varchar(1), -- (vain YO) // 1, 2 tai 3 // Opiskeluoikeus.Tyyppi 2,4,6,7 koultyp varchar(1), --koulutuksen tyyppi (vain AMK) // 1,2, tai 6 // OpiskeluoikeusTyyppi 1,3 */ -- valitaan yksi per opiskelija, jos ei löytynyt jo ID yllä! update T set opiskeluoikeus_id=o.ID, opiskeluoikeusavain=o.avain from #cimopisk T inner join virta.dbo.Opiskeluoikeus o on o.OpiskelijaID=T.opiskelija_id inner join virta.dbo.Op_oikeuden_ensisijaisuus oe on oe.OpiskeluoikeusID=o.ID where 1=1 -- ensisijainen alkamispäivänä and T.jakso_alkupvm between oe.Alkamispaivamaara and coalesce(oe.Paattymispaivamaara,'9999-9-9') ; -- koulutuskoodi update T set koulutuskoodi=(select k.Koodi from virta.dbo.Tutkintonimike k where k.ID=oj.TutkintonimikeID) from #cimopisk T inner join virta.dbo.Opiskeluoikeusjakso oj on oj.OpiskeluoikeusID=T.opiskeluoikeus_id where T.opiskeluoikeus_id is not null -- jakso voimassa alkupäivänä and T.jakso_alkupvm between oj.Alkamispaivamaara and coalesce(oj.Paattymispaivamaara,'9999-01-01') ; -- koulutusala -- nb! OKM:n ohjauksen ala update T set koulutusala=k.okmohjausala from #cimopisk T inner join Yhteiset.Koodistot.Koulutusluokitus k on k.Koodi=T.koulutuskoodi where T.opiskeluoikeus_id is not null and T.koulutuskoodi is not null -- voimassa alkupäivänä and T.jakso_alkupvm between k.Alkamispaivamaara and coalesce(k.Paattymispaivamaara,'9999-01-01') ; -- Lyhyt lähtevä joka on alunperin saapuva vaihto Suomeen, tai kotimainen vaihto -- Jos on Saapunut opiskeluoikeustyyppi = 9 ja Lyhyt lähtevä -- koulutusala (ohjausala) lähtevän opiskeluoikeudesta (opiskeluoikeustyyppi = 9) -- koulutusala -- nb! OKM:n ohjauksen ala update T set koulutusala=k.Koodi from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L ON L.OpiskelijaID =T.opiskelija_id inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = L.OpiskelijaID inner join virta.dbo.Koulutusala K ON K.id = OO.KoulutusalaID -- koulutusala (ohjausala) lähtevän opiskeluoikeudesta (opiskeluoikeustyyppi = 9) inner join virta.dbo.Opiskeluoikeuden_tyyppi otk on otk.ID = OO.Op_oikeuden_tyyppiID -- !! where T.opiskelija_id is not null AND otk.koodi IN ('9','8') -- Kansainvälinen vaihto ja kotimainen vaihto -- !! AND T.koulutuskoodi IS NULL AND K.Versio = 'ohjausala' ; -- opintoaste, koultyp update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1'--Ammattikorkeakoulututkinto then case when o.Aikuiskoulutus='1' then '2'--=Amk-tutkintoon johtava aikuiskoulutus when o.Aikuiskoulutus='2' then '1'--=Amk-tutkintoon johtava nuorten koulutus else '1' end when '3' then '6'--=Ylempi ammattikorkeakoulututkinto --when '12' then '3'--=Erikoistumisopinnot --when '15' then '5'--=Ammatillinen opettajankoulutus --when '19' then '7'--=Erikoistumiskoulutus end ) from #cimopisk T inner join virta.dbo.Opiskeluoikeus o on o.ID=T.opiskeluoikeus_id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk on otk.ID=o.Op_oikeuden_tyyppiID where T.opiskeluoikeus_id is not null ; -- opintoaste, koultyp update T set opintoaste=( case otk.Koodi when '2' then '1' when '4' then '2' when '6' then '3' when '7' then '3' end ) ,koultyp=( case otk.Koodi when '1' then '1' -- Ammattikorkeakoulututkinto when '3' then '6' -- Ylempi ammattikorkeakoulututkinto end ) from #cimopisk T inner join virta.dbo.Liikkuvuusjakso L on L.OpiskelijaID = T.opiskelija_id inner join virta.dbo.Opiskeluoikeuden_tyyppi otk on otk.ID = L.Opiskeluoikeuden_tyyppiID -- koultyp lähtevän jakson opiskeluoikeudesta (1) inner join virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = T.opiskelija_id -- !! inner join virta.dbo.Opiskeluoikeuden_tyyppi oootk on oootk.ID = OO.Op_oikeuden_tyyppiID -- !! where T.opiskelija_id is not null AND oootk.koodi IN ('9','8') -- Kansainvälinen vaihto ja kotimainen vaihto -- !! AND T.koulutuskoodi IS NULL --- -- TULOS --- select * from #cimopisk T order by hetu ; |
Kerätään kaikki liikkuvuusjaksot joiden opiskeluoikeudet tutkintoon johtavan tyyppiä ('1','2','3','4','6','7') tauluun #cimopisk
Liikkuvuuden suunta 1 (=Lähtevä)
Liikkuvusjaksot pituudeltaan >= 87 päivää.
Liikkuvusjakso alkamispäivämäärä tilastovuonna (jakson aloituspäivämäärän vuosi on tilastovuosi, nyt tilastovuosi 2016)
...