Opiskeluoikeuksien maaran tiedonkeruu Määrittely Opinto-oikeuksista tarvitaan seuraavat tiedot: Tieto jokaisesta yksittäisestä opinto-oikeudesta ja kytkentä niistä opinto-oikeuksista jotka ovat samalla henkilöllä. Tieto sillä tavalla että henkilöt voi ryhmitellä ryhmiin: 1 opinto-oikeus 2 opinto-oikeutta 3 opinto-oikeutta 4 opinto-oikeutta tai enemmän. Jokaisesta opinto-oikeudesta opinto-oikeuden 6 nro-koodi ja korkeakoulu-tiedot. Näiden tietojen perusteella voi opinto-oikeudet jakaa myös yo- ja amk-sektoreiden välillä. Jokaisesta opinto-oikeudesta tieto on ensisijainen opinto-oikeus. Näitä voi henkilöllä olla yksi per korkeakulu, eri korkeakouluissa useita Jokaisesta ylemmästä korkeakoulututkinnon opinto-oikeudesta tieto kuuluuko siihen oikeus alempaan korkeakoulututkintoon. (koskee vain yliopistoja. Poiminta Tulossa selostus tai aukikirjoitus SQL-kyselyistä, mutta itse SQL ohessa: use virta go Expand source declare @debug int = 1 declare @vuosi varchar(4 = '2014' -- Temp-taulu tietojen valintaa varten -- NB! param-taulussa saa olla vain yksi rivi! IF OBJECT_ID('tempdb..#param' IS NOT NULL BEGIN truncate table #param drop table #param if @debug<>0 print convert(varchar,getdate(,120+' DROP temp-taulu param' END create table #param ( vuosi varchar(4, --org varchar(30,---lyhenne (DB-nimi --kk varchar(2,--yliopisto (positiot 1-2 tilpvm date,--tilastointipäivä if @debug<>0 print convert(varchar,getdate(,120+' CREATE temp-taulu param' insert into #param (vuosi,tilpvm select @vuosi as vuosi,@vuosi+'-09-20' as tilpvm
--select * from #param -- Temp-taulu tiedonkeruun tietoja varten IF OBJECT_ID('tempdb..#oikeus' IS NOT NULL BEGIN truncate table #oikeus drop table #oikeus if @debug<>0 print convert(varchar,getdate(,120+' DROP temp-taulu oikeus' END create table #oikeus ( varchar(8, Henkilotunnus varchar(11, Koulutuskoodi varchar(6, Tutkintonimike varchar(200, Ensisijainen bit, Ylempi_liittyy_alempi bit, -- myös null-arvo merkityksellinen! -- opiskelijaavain varchar(100, opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelija_id ON #oikeus (opiskelija_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskeluoikeus_id ON #oikeus (opiskeluoikeus_id if @debug<>0 print convert(varchar,getdate(,120+' CREATE temp-taulu tkopisk' insert into #oikeus (kk,henkilotunnus,ensisijainen,ylempi_liittyy_alempi,opiskelijaavain,opiskeluoikeusavain,opiskelija_id,opiskeluoikeus_id select --'>'+CAST(@oik_lkm as varchar as "Opiskeluoikeuksia", o.db as "", h.henkilotunnus, tk.koodi as "Koulutuskoodi", tk.nimi as "Tutkintonimike" --/*-- ensisijainen tilpvm ( select distinct 1 from Op_oikeuden_ensisijaisuus oe where oe.opiskeluoikeusid=o.id and oe.db=o.db and (select tilpvm from #param between oe.alkamispaivamaara and coalesce(oe.paattymispaivamaara,'9999-01-01',0 "Ensisijainen" --/*-- maisterioikeuteen liittyy kandi?, when ot.koodi='4' then -- opiskeluoikeuden tyyppi: ylempi kk-tutkinto (maisteri coalesce( ( select distinct 1 as "liittyy kandi" from Opiskeluoikeus kandi inner join Opiskeluoikeuden_liittyvyys lii on lii.opiskeluoikeusid=kandi.id --and lii.opiskeluoikeusid2=o.id and lii.db=kandi.db where lii.opiskeluoikeusid2=o.id and kandi.db=o.db,0
else null -- ei ylempi as "Ylempi_liittyy_alempi" --*/,opiskelijaavain=p.avain,opiskeluoikeusavain=o.avain,opiskelija_id=p.id,opiskeluoikeus_id=o.id from Henkilo h inner join Opiskelija p on p.henkiloid=h.id and p.db=h.db inner join Opiskeluoikeus o on o.opiskelijaid=p.id and o.db=p.db inner join Opiskeluoikeuden_tyyppi ot on ot.id=o.op_oikeuden_tyyppiid --and ot.db=o.db inner join Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=o.id and lt.db=o.db inner join Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid --and kt.db=lt.db inner join Opiskeluoikeusjakso oj on oj.opiskeluoikeusid=o.id and oj.db=o.db inner join Tutkintonimike tk on tk.id=oj.tutkintonimikeid --and tk.db=oj.db -- where 1=1 -- tutkinto-tyyppinen and ot.koodi in ('1','2','3','4','5','6','7' -- TODO: muita tyyppejä? -- voimassa tilpvm and (select tilpvm from #param between o.alkamispaivamaara and coalesce(o.paattymispaivamaara,'9999-01-01' -- tila and kt.koodi = '1' --aktiivinen and (select tilpvm from #param between lt.alkamispaivamaara and coalesce(lt.paattymispaivamaara,'9999-01-01' and len(h.henkilotunnus=11 -- virallinen suomalainen hetu (ei syntymäajan perusteella -- ilmo and p.id in ( select l.opiskelijaid from Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid where lt.koodi in ('1','2','3' --läsnä, poissa, poissa ei kuluta and l.ilmoittautumispaivamaara <= (select tilpvm from #param and (select tilpvm from #param between l.alkamispaivamaara and coalesce(l.paattymispaivamaara,'9999-01-01' and l.db=p.db -- jakso and (select tilpvm from #param between oj.alkamispaivamaara and coalesce(oj.paattymispaivamaara,'9999-01-01' --*/ --select count(*, count(distinct Henkilotunnus from #oikeus select '1' as "Oikeuksia", where i.db= as "Korkeakoulu" "Koulutusala2002_koodi"
"Koulutusala2002" "Opintoala1995_koodi" "Opintoala1995" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT,'-1' "Koulutusala_koodi" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT where,'tuntematon' "Koulutusala", Ensisijainen when 1 then 'Ensisijainen' else '' as "Ensijaisuus", Ylempi_liittyy_alempi when 1 then 'Liittyy alempi oikeus' when 0 then 'Ei liity alempaa' else '' as "Ylempään oikeuteen liittyy alempi",count(* Lkm group by j.henkilotunnus having COUNT(*=1 group by, union select '2' as "Oikeuksia", where i.db= as "Korkeakoulu" "Koulutusala2002_koodi" "Koulutusala2002" "Opintoala1995_koodi" "Opintoala1995"
when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT,'-1' "Koulutusala_koodi" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT where,'tuntematon' "Koulutusala", Ensisijainen when 1 then 'Ensisijainen' else '' as "Ensijaisuus", Ylempi_liittyy_alempi when 1 then 'Liittyy alempi oikeus' when 0 then 'Ei liity alempaa' else '' as "Ylempään oikeuteen liittyy alempi",count(* Lkm group by j.henkilotunnus having COUNT(*=2 group by, union select '3' as "Oikeuksia", where i.db= as "Korkeakoulu" "Koulutusala2002_koodi" "Koulutusala2002" "Opintoala1995_koodi" "Opintoala1995" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT,'-1' "Koulutusala_koodi"
when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT where,'tuntematon' "Koulutusala", Ensisijainen when 1 then 'Ensisijainen' else '' as "Ensijaisuus", Ylempi_liittyy_alempi when 1 then 'Liittyy alempi oikeus' when 0 then 'Ei liity alempaa' else '' as "Ylempään oikeuteen liittyy alempi",count(* Lkm group by j.henkilotunnus having COUNT(*=3 group by, union select '4' as "Oikeuksia", where i.db= as "Korkeakoulu" "Koulutusala2002_koodi" "Koulutusala2002" "Opintoala1995_koodi" "Opintoala1995" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT,'-1' "Koulutusala_koodi" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT where,'tuntematon' "Koulutusala"
, Ensisijainen when 1 then 'Ensisijainen' else '' as "Ensijaisuus", Ylempi_liittyy_alempi when 1 then 'Liittyy alempi oikeus' when 0 then 'Ei liity alempaa' else '' as "Ylempään oikeuteen liittyy alempi",count(* Lkm group by j.henkilotunnus having COUNT(*=4 group by, union select '>4' as "Oikeuksia", where i.db= as "Korkeakoulu" "Koulutusala2002_koodi" "Koulutusala2002" "Opintoala1995_koodi" "Opintoala1995" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT,'-1' "Koulutusala_koodi" when exists (select * from Yhteiset..Hae_Yliopistot(,DEFAULT where,'tuntematon' "Koulutusala", Ensisijainen when 1 then 'Ensisijainen' else '' as "Ensijaisuus", Ylempi_liittyy_alempi when 1 then 'Liittyy alempi oikeus' when 0 then 'Ei liity alempaa' else '' as "Ylempään oikeuteen liittyy alempi",count(* Lkm
group by j.henkilotunnus having COUNT(*>4
group by, --