- Created by Helena Majamäki, last updated on Mar 14, 2024 28 minute read
Poimintakuvaus (6.2.2019) tavoiteajassa tutkinnon suorittaneet poiminta VIRTAsta
Poimintakuvaus
- Poimitaan perusjoukkoon AMK (tyyppi 1), Alempi korkeakoulu (tyyppi 2) ja ylempi korkeakoulututkinnot (tyyppi 4)
tutkintosuorituksen suoritusvuoden mukaan (tilastovuosi=kalenterivuosi. Virta opintosuoritus laji 1 (tutkintosuoritus) Poimitaan tutkintosuoritukseen liitetty opiskeluoikeus, sen alkamispäivämäärä, suoritetun tutkinnon koulutuskoodi (6 numeroinen Tilastokeskuksen koulutuskoodi) ynm tarvittavat tunnistetiedot.
Tutkinnon suorittaneet perusjoukkoTutkinnon suorittaneet perusjoukko Expand source-- Perusjoukko, tutkinnon suorittaneet CREATE TABLE #Tutkinnon_suorittaneet ( opiskelijaid int, opiskeluoikeusid int, opintosuoritusid int, tutkintonimikeid int, opiskelijaAvain varchar(100), opiskeluoikeusAvain varchar(100), opintosuoritusAvain varchar(100), tutkintokoodi varchar(6), tutkinnonsuorituspvm date, tavoiteaika_lukukausia smallint, tavoiteaika_kuukausia int, vaadittu_tutkinnon_laajuus_op int default(0), opiskeluoikeustyyppi smallint, liittyva_oikeus int null, koulutustyyppi smallint null ) -- Opiskeluaika, läsnä, poissaolot CREATE TABLE #Opiskeluaika ( opiskelijaid int, opiskeluoikeusid int, opintosuoritusid int, ooAlkamispvm date, tutkinnonsuorituspvm date, lukukaudet int default (0), kuukausia int default (0), paivia int default (0), vuosia float, opiskeluoikeustyyppi smallint, lasnaoloLukukaudet int default (0), lasnaoloKuukaudet int default (0), kaytetty_aika_kk int, poissaoloLukukaudet int default (0), poissaoloKuukaudet int default (0), KokonaisAika_kk int, opiskeluoikeusAvain varchar(100) ) /* Tavoiteaika, tutkinnon laajuuden mukaan. 60 opintopistettä - tavoitteellinen suorittamisaika 1 vuosi = 12 kuukautta = 2 lukukautta */ INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 0.5, 6, 1 , 30 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 1, 12, 2 , 60 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 1.5, 18 , 3 , 90 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 2 , 24, 4 , 120 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 2.5, 30, 5 , 150 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 3 , 36, 6 , 180 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 3.5, 42, 7 , 210 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 4 , 48, 8 , 240 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 4.5, 54, 9 , 270 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 5 , 60, 10 , 300 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 5.5, 66, 11 , 330 ) INSERT INTO #Tavoiteaika (vuodet, tavoiteaika_kuukausia, tavoiteaika_lukukausia, vaadittu_op ) VALUES ( 6 , 72, 12 , 360 ) CREATE NONCLUSTERED INDEX IX_Tavoiteaika ON #Tavoiteaika (vaadittu_op) -- Perusjoukko tutkinnon suorittaneet tilastovuonna, #Tavoiteaika taulusta tutkinnon tavoiteaika INSERT INTO #Tutkinnon_suorittaneet( opiskelijaid, opiskeluoikeusid, opintosuoritusid, tutkintonimikeid, opiskelijaAvain, opiskeluoikeusAvain , opintosuoritusAvain, tutkintokoodi, tutkinnonsuorituspvm, tavoiteaika_lukukausia, tavoiteaika_kuukausia, vaadittu_tutkinnon_laajuus_op, opiskeluoikeustyyppi ) SELECT DISTINCT O.id, OO.id, OS.id, T.id, O.avain, OO.avain, OS.avain, T.Koodi, OS.Suorituspaivamaara, TA.tavoiteaika_lukukausia, TA.tavoiteaika_kuukausia, OO.Laajuus, OTYP.Koodi FROM virta.dbo.Opiskelija O JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Opintosuoritus OS ON OS.OpiskeluoikeusID = OO.ID JOIN virta.dbo.Opintosuorituksen_laji OL ON OL.id = OS.Opintosuorituksen_lajiID JOIN virta.dbo.Tutkintonimike T ON T.id = OS.TutkintonimikeID JOIN virta.dbo.Opiskeluoikeuden_tyyppi OTYP ON OTYP.id = OO.Op_oikeuden_tyyppiID LEFT JOIN #Tavoiteaika TA ON TA.vaadittu_op = OO.Laajuus WHERE O.db = @mydb AND OO.db = @mydb AND OS.db = @mydb AND OL.Koodi = '1' -- Tutkinto laji opintosuoritus AND YEAR(OS.Suorituspaivamaara) = @tutkintoSuoritusVuosi AND T.koodi < 800000 -- Ei tohtoreita AND OTYP.Koodi NOT IN ('3','5') -- Ei ylempi AMK tutkinto, ei erikoislääkäri AND OTYP.Koodi IN ('1','2','4') -- AMK tutkinto, Alempi ja ylempi korkeakoulututkinto CREATE NONCLUSTERED INDEX IX_Tutkinnon_suorittaneet_opiskelijaid ON #Tutkinnon_suorittaneet (opiskelijaid) INCLUDE (opiskeluoikeusid,opintosuoritusid);
Tutkintoon liitetyn Opiskeluoikeuden alkamispäivämäärä on suoraan korkeakoulun ilmoittama Opiskeluoikeus.AlkuPvm mukaan.
Siirto-opiskelijalle alkuperäisen opiskeluoikeuden alkamispäivämäärä Opiskeluoikeus.Siirtopaivamaara. Katso kohta 8. Siirto-opiskelija
Opiskeluoikeuden aloituspvmOpiskeluoikeuden alkamispäivmäärä-- Esim. tässä Opiskeluoikeuden alkamispäivämäärä, AlkuPvm = 1.8.2013 <Opiskeluoikeus avain="1234"opiskelijaAvain="4567"> <AlkuPvm>2013-08-01</AlkuPvm> <LoppuPvm>2018-05-23</LoppuPvm>
Yliopistot: Tarkistetaan onko kyseiseen opiskeluoikeuteen liittyvyys, opiskeluoikeus tyyppi 4 maisteri (liittyvä tyyppi 2 kandi)
"Mikäli opiskelijalle on annettu tutkinnon suoritusoikeus samaan aikaan sekä alempaan että ylempään korkeakoulututkintoon, on tutkinnon tavoiteaika näiden
opinto-oikeuksien yhteenlaskettu aika ja tutkinnon suorittamisaika lasketaan alemman korkeakoulututkinnon aloittamisajasta."Liittyvä oikeus Expand sourceExpand source -- Alempi-Ylempi Korkeakoulututkinto == Kandi-Maisteri opiskeluoikeuden liittyvyys UPDATE T SET T.liittyva_oikeus = OL.OpiskeluoikeusID FROM #Tutkinnon_suorittaneet T JOIN virta.dbo.Opiskeluoikeuden_liittyvyys OL ON T.opiskeluoikeusid = OL.OpiskeluoikeusID2 JOIN virta.dbo.Opiskeluoikeuden_tyyppi OTYP ON OTYP.koodi = T.opiskeluoikeustyyppi WHERE T.opiskeluoikeustyyppi = '4' AND OL.db = @mydb -- Liittyvä opiskeluoikeus kandi-maisteri == alempi-ylempi kk-tutkinto -- Kandi-maisteri jos samanaikaisesti, käsitellään yhdessä 5 vuotta UPDATE T SET T.vaadittu_tutkinnon_laajuus_op = 300 , T.tavoiteaika_lukukausia = 10 FROM #Tutkinnon_suorittaneet T JOIN virta.dbo.Opiskeluoikeus OO ON OO.id = T.opiskeluoikeusid WHERE T.liittyva_oikeus IS NOT NULL AND T.liittyva_oikeus IN ( SELECT OS.OpiskeluoikeusID FROM virta.dbo.Opintosuoritus OS WHERE OS.OpiskeluoikeusID = T.liittyva_oikeus AND OS.db = @mydb AND OS.Opintosuorituksen_lajiID = 1 AND OS.Suorituspaivamaara <= T.tutkinnonsuorituspvm )
AMK: Koulutustyyppi 1 = Päivämuotototeutus, 2 = Monimuotototeutus. TK-koodisto ent. 1=Nuorten koulutus, 2=AikuiskoulutusKoulutustyyppi Expand source-- Koulutustyyppi, AMK 1 = Amk-tutkintoon johtava nuorten koulutus, 2 = Amk-tutkintoon johtava aikuiskoulutus Tilastokeskuksen koodisto (AMK Opiskelijatiedonkeruu) UPDATE T SET T.koulutustyyppi = ( case OTYP.Koodi when '1' -- Ammattikorkeakoulututkinto tyyppi then case when o.Aikuiskoulutus = '1' then '2' -- =Amk-tutkintoon johtava aikuiskoulutus else '1' -- =Amk-tutkintoon johtava nuorten koulutus end end ) FROM #Tutkinnon_suorittaneet T JOIN virta.dbo.Opiskeluoikeus O on o.ID = T.opiskeluoikeusid JOIN virta.dbo.Opiskeluoikeuden_tyyppi OTYP ON OTYP.koodi = T.opiskeluoikeustyyppi WHERE T.opiskeluoikeustyyppi IN (1) AND O.db = @mydb
Tutkinnon vaadittu laajuus opiskeluoikeuden laajuus tiedosta (vaadittu laajuus opintopisteissä)
Opiskeluoikeus LaajuusOpiskeluoikeuden laajuus<Opiskeluoikeus ...> <Laajuus> <Opintopiste>180</Opintopiste> </Laajuus> </Opiskeluoikeus>
Esim opiskeluoikeus Expand source<Opiskeluoikeus avain="1234" opiskelijaAvain="4567"> <AlkuPvm>2013-08-01</AlkuPvm> <LoppuPvm>2018-05-23</LoppuPvm> <Tila> <AlkuPvm>2018-05-24</AlkuPvm> <Koodi>3</Koodi> </Tila> <Tila> <AlkuPvm>2013-08-01</AlkuPvm> <LoppuPvm>2018-05-23</LoppuPvm> <Koodi>1</Koodi> </Tila> <Tyyppi>2</Tyyppi> <Myontaja>01901</Myontaja> <Jakso koulutusmoduulitunniste="LuK, Matematiikan koulutusohjelma, Matematiikka"> <AlkuPvm>2013-08-01</AlkuPvm> <LoppuPvm>2015-12-31</LoppuPvm> <Koulutuskoodi>642101</Koulutuskoodi> <Koulutuskunta>091</Koulutuskunta> </Jakso> <Jakso koulutusmoduulitunniste="LuK, Tietojenkäsittelytieteen koulutusohjelma, Tietojenkäsittelytiede"> <AlkuPvm>2016-01-01</AlkuPvm> <LoppuPvm>2018-05-23</LoppuPvm> <Koulutuskoodi>642201</Koulutuskoodi> <Koulutuskunta>091</Koulutuskunta> </Jakso> <Ensisijaisuus> <AlkuPvm>2013-08-01</AlkuPvm> <LoppuPvm>2018-05-23</LoppuPvm> </Ensisijaisuus> <Koulutusala versio="ohjausala">7</Koulutusala> <Liittyvyys liittyvaOpiskeluoikeusAvain="1235" /> <Laajuus> <Opintopiste>180</Opintopiste> </Laajuus> </Opiskeluoikeus>
Tutkintojen laajuudet poimitaan ensisijaisesti tutkintosuoritukseen liitetyn opiskeluoikeuden vaadittu laajuus tiedoista, jos laajuus tieto opiskeluoikeudesta puuttuu käytetään koulutuskoodin mukaan
jonkun muun tutkinnon sama koulutuskoodin laajuustietoa.
Jos vaadittu laajuus tieto edelleen puuttuu tai on 0 op käytössä vakio arvot 180 op, 120 op opiskeluoikeuden tyypin mukaan, ynm. poikkeavat suoraan Tilastokeskuksen koulutuskoodin mukaan.
Tavoiteaika taulukko tutkinnon vaaditun laajuuden mukaan (1 vuosi = 60 op, 2 lukukautta, 12 kuukautta )
Tavoite vuodet Tavoite_lukukaudet Tavoite_kuukaudet Vaadittu tutkinnon laajuus (op) 0,5 1 6 30 1 2 12 60 1,5 3 18 90 2 4 24 120 2,5 5 30 150 3 6 36 180 3,5 7 42 210 4 8 48 240 4,5 9 54 270 5 10 60 300 5,5 11 66 330 6 12 72 360 Vaadittu laajuus Expand source-- Kutsutaan kun kerätään vaadittu laajuus per tutkintokoodi, jos puuttuu eikä aiemmin tiedossa --PROCEDURE [dbo].[sp_tutkinto_vaadittu_laajuus] ( @tutkintokoodi varchar(6), @vaadittu_laajuus int ) --AS --IF NOT EXISTS ( SELECT * FROM dbo.tutkinto_vaadittu_laajuus T WHERE T.tutkintokoodi = @tutkintokoodi AND T.vaadittu_laajuus > 0 ) --BEGIN -- IF ( @vaadittu_laajuus > 0) -- BEGIN -- INSERT INTO dbo.tutkinto_vaadittu_laajuus (tutkintokoodi,vaadittu_laajuus) -- VALUES ( @tutkintokoodi, @vaadittu_laajuus) -- END --END --Otetaan talteen vaadittu laajuus per tutkintokoodi, jos puuttuu joltakin opiskeluoikeudelta DECLARE @koodi VARCHAR(max) DECLARE c CURSOR FOR SELECT tutkintokoodi FROM #Tutkinnon_suorittaneet DECLARE @laajuus int OPEN c FETCH NEXT FROM c INTO @koodi WHILE @@FETCH_STATUS = 0 BEGIN IF NOT EXISTS (SELECT * FROM dbo.tutkinto_vaadittu_laajuus WHERE tutkintokoodi = @koodi) BEGIN SELECT @laajuus = vaadittu_tutkinnon_laajuus_op FROM #Tutkinnon_suorittaneet T WHERE T.tutkintokoodi = @koodi AND T.vaadittu_tutkinnon_laajuus_op IS NOT NULL EXEC sp_tutkinto_vaadittu_laajuus @koodi, @laajuus SET @laajuus = 0 END FETCH NEXT FROM c INTO @koodi END CLOSE c DEALLOCATE c -- Tunnetut ja poikkeavat -- Lääketieteen lisensiaatti (360 op) UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 360, tavoiteaika_lukukausia = 12 WHERE tutkintokoodi = '772101' -- Hammaslääketieteen lisensiaatti (330 op) UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 330, tavoiteaika_lukukausia = 11 WHERE tutkintokoodi = '772201' -- Eläinlääketieteen lisensiaatti (360 op) UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 360, tavoiteaika_lukukausia = 12 WHERE tutkintokoodi = '772301' -- Psykologian maisteri 733501 (330 op) UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 330, tavoiteaika_lukukausia = 11 WHERE tutkintokoodi = '733501' -- Musiikin maisteri 723111 (330 op) UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 330, tavoiteaika_lukukausia = 11 WHERE tutkintokoodi = '723111' -- Kuvataiteen maisteri 724101 (330 op) UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 330, tavoiteaika_lukukausia = 11 WHERE tutkintokoodi = '723111' UPDATE T SET T.vaadittu_tutkinnon_laajuus_op = L.vaadittu_laajuus FROM #Tutkinnon_suorittaneet T JOIN dbo.tutkinto_vaadittu_laajuus L ON L.tutkintokoodi = T.tutkintokoodi WHERE T.vaadittu_tutkinnon_laajuus_op IS NULL AND L.vaadittu_laajuus > 0 UPDATE T SET T.tavoiteaika_lukukausia = TA.tavoiteaika_lukukausia FROM #Tutkinnon_suorittaneet T JOIN #Tavoiteaika TA ON TA.vaadittu_op = T.vaadittu_tutkinnon_laajuus_op WHERE T.tavoiteaika_lukukausia IS NULL -- Maisterit UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 120, tavoiteaika_lukukausia = 4 WHERE vaadittu_tutkinnon_laajuus_op IS NULL AND tutkintokoodi LIKE '7%' AND tutkintokoodi NOT IN ('772101','772201','772301','733501','723111','724101') AND @kk_tyyppi = '42' -- Maisterit, muu tai joku muu tuntematon UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 120, tavoiteaika_lukukausia = 4 WHERE vaadittu_tutkinnon_laajuus_op = 0 AND tutkintokoodi LIKE '7%' AND tutkintokoodi NOT IN ('772101','772201','772301','733501','723111','724101') AND @kk_tyyppi = '42' -- Kandit samma sak UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 180, tavoiteaika_lukukausia = 6 WHERE vaadittu_tutkinnon_laajuus_op = 0 AND tutkintokoodi LIKE '6%' AND @kk_tyyppi = '42' UPDATE #Tutkinnon_suorittaneet SET vaadittu_tutkinnon_laajuus_op = 180, tavoiteaika_lukukausia = 6 WHERE vaadittu_tutkinnon_laajuus_op IS NULL AND tutkintokoodi LIKE '6%' AND @kk_tyyppi = '42' UPDATE T SET T.tavoiteaika_lukukausia = TA.tavoiteaika_lukukausia FROM #Tutkinnon_suorittaneet T JOIN #Tavoiteaika TA ON TA.vaadittu_op = T.vaadittu_tutkinnon_laajuus_op WHERE T.tavoiteaika_lukukausia IS NULL
5.Tausta lisätietoja raportille opiskelijasta tutkinnon suorittaneen lisätietoja: ikä suoritushetkellä, sukupuoli. Onko aiempia tutkintoja missä tahansa Suomen korkeakouluissa, tietoa käytetään aiemman samantasoisen tutkinnon tarkistuksessaIkä Expand source-- Opiskelijan perustiedot INSERT INTO #HenkiloTiedot ( henkiloid, opiskelijaid, henkilotunnus, sukupuoli, tutkinnonsuorituspvm, tutkintokoodi, opiskelijaAvain, db, tutkinnontaso ) SELECT DISTINCT H.id, O.id, H.henkilotunnus, S.koodi, T.tutkinnonsuorituspvm, T.tutkintokoodi, O.avain, O.db, T.opiskeluoikeustyyppi FROM virta.dbo.henkilo H JOIN virta.dbo.opiskelija O ON O.henkiloid = H.id JOIN virta.dbo.Sukupuoli S ON S.id = H.SukupuoliID JOIN #Tutkinnon_suorittaneet T ON T.opiskelijaid = O.id WHERE O.db = @mydb AND H.db = @mydb CREATE NONCLUSTERED INDEX IX_HenkiloTiedot_opiskelijaid ON #HenkiloTiedot (id) INCLUDE (opiskelijaid,tutkinnonsuorituspvm); -- ikä tutkinnon suoritushetkellä hetun, syntymäajan avulla DECLARE @henkilotunnus varchar(12) DECLARE @oAvain varchar(200) DECLARE @ika tinyint DECLARE @a_pvm date DECLARE @b_pvm date DECLARE @counter int DECLARE @maxi int DECLARE @tutkintotaso smallint SELECT @counter = min(id) FROM #HenkiloTiedot SELECT @maxi = max(id) FROM #HenkiloTiedot WHILE @counter <= @maxi BEGIN SELECT @henkilotunnus = henkilotunnus FROM #HenkiloTiedot WHERE id = @counter SELECT @b_pvm = tutkinnonsuorituspvm FROM #HenkiloTiedot WHERE id = @counter SELECT @a_pvm = CONVERT( date, case when substring(@henkilotunnus, 7,1) = 'A' THEN substring(@henkilotunnus,1,2)+'.'+substring(@henkilotunnus,3,2)+'.20'+substring(@henkilotunnus, 5,2) when substring(@henkilotunnus, 7,1) = '-' THEN substring(@henkilotunnus,1,2)+'.'+substring(@henkilotunnus,3,2)+'.19'+substring(@henkilotunnus, 5,2) end , 104) SELECT @ika = dbo.Laske_ika ( @a_pvm, @b_pvm ) -- Ikä tutkinnon suoritushetkellä UPDATE #HenkiloTiedot SET ika = @ika WHERE id = @counter SET @counter = @counter + 1 END -- "Ei ikää" - tuntematon = -1 UPDATE #HenkiloTiedot SET ika = -1 WHERE ika IS NULL -- Tällä kerätään kaikki ja myöhemmin tarkistetaan tämän avulla onko opiskelija suorittanut aiemmin samantasoisen tutkinnon DECLARE @vuosi int SET @vuosi = 2000 WHILE @vuosi <= YEAR(getdate()) BEGIN INSERT INTO virtavie.dbo.Tavoiteajassa_aiemmin_tutkinnon_suorittaneet ( Henkilotunnus, tutkintokoodi, tutkinnonsuorituspvm, opiskelijaAvain, db, tutkinnontaso ) SELECT DISTINCT H.Henkilotunnus, T.Koodi, OS.Suorituspaivamaara, O.avain, O.DB, KL.koulutusastetaso1_koodi FROM virta.dbo.henkilo H JOIN virta.dbo.Opiskelija O ON O.HenkiloID = H.id JOIN virta.dbo.Opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN virta.dbo.Opintosuoritus OS ON OS.OpiskeluoikeusID = OO.ID JOIN virta.dbo.Opintosuorituksen_laji OL ON OL.id = OS.Opintosuorituksen_lajiID JOIN virta.dbo.Tutkintonimike T ON T.id = OS.TutkintonimikeID -- 2019-05-03 Tutkinnon koulutusaste koulutusluokittelusta koulutuskoodin avulla JOIN dw.d_koulutusluokitus KL ON KL.koulutusluokitus_koodi = T.Koodi WHERE OL.Koodi = '1' AND KL.koulutusastetaso1_koodi > 0 -- Ei tuntemattomia AND YEAR(OS.Suorituspaivamaara) = @vuosi SET @vuosi = @vuosi + 1 END
6.Tarkistetaan onko aiempi saman tason (tutkinnon koulutusaste Tilastokeskuksen 6-numeroisen koulutuskoodin avulla) Suomessa suoritettu tutkinto ( rajaus vuoden > 2000 jälkeen suoritettu korkeakoulu tutkinto)
Aiempi tutkinto Expand source-- Onko opiskelijalla olemassa aiempi saman tason tutkinto jostain korkeakoulusta? SELECT @counter = min(id) FROM #HenkiloTiedot SELECT @maxi = max(id) FROM #HenkiloTiedot DECLARE @tk varchar(6) WHILE @counter <= @maxi BEGIN SELECT @henkilotunnus = henkilotunnus FROM #HenkiloTiedot WHERE id = @counter SELECT @oAvain = opiskelijaAvain FROM #HenkiloTiedot WHERE id = @counter SELECT @b_pvm = tutkinnonsuorituspvm FROM #HenkiloTiedot WHERE id = @counter SELECT @tk = tutkintokoodi FROM #HenkiloTiedot WHERE id = @counter SELECT @tutkintotaso = tutkinnontaso FROM #HenkiloTiedot WHERE id = @counter IF EXISTS ( SELECT * FROM Tavoiteajassa_aiemmin_tutkinnon_suorittaneet H WHERE H.henkilotunnus = @henkilotunnus AND LEN(H.henkilotunnus)> 7 AND H.tutkinnonsuorituspvm < @b_pvm -- Aiempi AND H.tutkintokoodi <> @tk AND H.tutkinnontaso = @tutkintotaso -- Onko saman tason aiempi tutkinto? ) BEGIN UPDATE #HenkiloTiedot SET on_aiempi_tutkinto = 1 WHERE id = @counter END -- Jos ei ole hetua, samasta korkeakoulusta opiskelijaavaimen avulla IF EXISTS ( SELECT * FROM Tavoiteajassa_aiemmin_tutkinnon_suorittaneet H WHERE H.henkilotunnus = @henkilotunnus AND LEN(H.henkilotunnus)<= 7 AND H.opiskelijaAvain = @oAvain AND H.db = @mydb AND H.tutkinnonsuorituspvm < @b_pvm -- Aiempi AND H.tutkintokoodi <> @tk AND H.tutkinnontaso = @tutkintotaso -- Onko saman tason aiempi tutkinto? ) BEGIN UPDATE #HenkiloTiedot SET on_aiempi_tutkinto = 1 -- Kyllä on (1)! WHERE id = @counter END SET @counter = @counter + 1 END
7.Lasketaan tutkintoon käytetty aika, läsnäolon mukaan.
Opiskeluaika = Opiskeluoikeuden alkamispäivämäärä ja tutkinnon suorituspäivämäärä, lukukausissa ja kuukausissa, pois laskettu mahdollinen poissaolo käytetystä ajasta.
Käytetty aika kuukaudet = Opiskeluoikeuden alkamispäivämäärä - tutkinnon suorituspäivämäärä kuukausissa
(jos opiskeluoikeudessa ei poissaoloja, käytetty aika on tämä)
Kuukausitietojen pyöristys päivänmäärätiedoista: Tarkastellaan opintojen aloittamiskuukauden ja tutkinnon suorittamiskuukauden päivänmäärätietoja (opiskeluoikeuden alkamispäivänmäärä ja tutkinnon suorituspäivänmäärä) siten, että jos näiltä kuukausilta kertyy käytettyjä päiviä yhteensä yli 15 niin tutkintoon käytettyyn aikaan tulee yksi kuukausi lisää. Jos tutkinto suoritettu helmikuussa raja on 14 päivää.
Katso esim. kuvausAika kuukausissa Expand sourceDECLARE @ooAlkamispvm date DECLARE @tutkinnonsuorituspvm date DECLARE @kuukausia int DECLARE @paivia int DECLARE @SeuraavaEnsimmainenPv date DECLARE @EdellinenEnsimmainenPv date SET @kuukausia = 0 SET @paivia = 0 SET @counter = 0 SET @maxi = 0 SELECT @counter = min(id) FROM #Opiskeluaika SELECT @maxi = max(id) FROM #Opiskeluaika WHILE @counter <= @maxi BEGIN /* Opiskeluoikeuden alkamispäivämäärä */ SELECT @ooAlkamispvm = O.ooAlkamispvm FROM #Opiskeluaika O WHERE O.id = @counter /* Tutkinnon suorituspäivämäärä */ SELECT @tutkinnonsuorituspvm = O.tutkinnonsuorituspvm FROM #Opiskeluaika O WHERE O.id = @counter /* Esim. 2014-08-25 => 2014-09-01 */ SELECT @SeuraavaEnsimmainenPv = DATEADD(d, 1, EOMONTH(@ooAlkamispvm)) /* Esim. 2018-02-23 => 2018-02-01 */ SELECT @EdellinenEnsimmainenPv = CAST(CAST(YEAR(@tutkinnonsuorituspvm)AS varchar(4)) + '-' + CAST(MONTH(@tutkinnonsuorituspvm) AS varchar(2)) + '-01' AS date ) /* 2014-09-01 - 2018-02-01 välinen aika kuukausissa */ SELECT @kuukausia = DATEDIFF(mm, @SeuraavaEnsimmainenPv , @EdellinenEnsimmainenPv ) /* 2014-08-25 - 2014-09-01 + 2018-02-01 - 2018-02-23 välinen aika päivissä muista +1 */ SELECT @paivia = DATEDIFF(dd, @ooAlkamispvm, @SeuraavaEnsimmainenPv ) + DATEDIFF(dd, @EdellinenEnsimmainenPv, @tutkinnonsuorituspvm) + 1 /* Jos muu kuukausi kuin Helmikuu onko yli 15 päivää => +1 */ IF ( @paivia > 15 AND MONTH(@tutkinnonsuorituspvm)<>2) BEGIN SELECT @kuukausia = @kuukausia + 1 END /*Helmikuu onko yli 14 päivää => +1 */ IF ( @paivia > 14 AND MONTH(@tutkinnonsuorituspvm)=2) BEGIN SELECT @kuukausia = @kuukausia + 1 END UPDATE O SET O.kuukausia = @kuukausia FROM #Opiskeluaika O WHERE O.id = @counter SET @counter = @counter + 1 SET @kuukausia = 0 END /* Käytetyistä ajasta (kuukaudet) vähennetään poissaoloaika lukukausiilmoittumisten mukaan (kuukausissa) */
Käytetty aika kuukaudet = käytetty aika kuukaudet - poissaolo kuukaudet
(jos opiskeluoikeudessa poissaoloja poistetaan poissaolot)Käytetyt lukukaudet = läsnaolo lukukaudet (ilmoittautumisten läsnälukukausia yhteensä opiskeluoikeuden alkamispäivämäärän ja tutkinnon suorituspäivämäärän välillä)
Läsnäolo Expand sourceIF ( @kk_tyyppi = 41 OR @onOOLukukausi = 1 ) BEGIN -- Nopeampi näin kuin suoraan Virta tauluun joini INSERT INTO #LasnaolotAMK ( opiskelijaid, opiskeluoikeusid, Alkamispaivamaara, Paattymispaivamaara, db, opiskelijaAvain, opiskeluoikeusAvain, Lukukausi_ilmoittautumisen_tilaID ) SELECT DISTINCT L.OpiskelijaID, L.opiskeluoikeusid, L.Alkamispaivamaara, L.Paattymispaivamaara, L.db, O.avain AS OpiskelijaAvain , OO.avain AS opiskeluoikeusAvain, L.Lukukausi_ilmoittautumisen_tilaID FROM virta.dbo.Lukukausi_ilmoittautuminen L JOIN virta.dbo.Opiskelija O ON O.id = L.OpiskelijaID JOIN virta.dbo.Opiskeluoikeus OO ON OO.id = L.opiskeluoikeusid -- Ei tutkinnon jälkeisiä JOIN #Tutkinnon_suorittaneet T ON T.opiskeluoikeusid = L.opiskeluoikeusid -- Ei opiskeluoikeuden edeltäviä JOIN #Opiskeluaika OA ON OA.opiskeluoikeusid = L.opiskeluoikeusid WHERE L.db = @mydb AND O.db = @mydb AND OO.db = @mydb -- Ei tutkinnon jälkeisiä ilmoittautumisia AND L.Alkamispaivamaara < T.tutkinnonsuorituspvm -- AND L.Paattymispaivamaara > OA.ooAlkamispvm AND OO.id IN (SELECT T.opiskeluoikeusid FROM #Tutkinnon_suorittaneet T WHERE T.opiskeluoikeusid = L.opiskeluoikeusid) CREATE NONCLUSTERED INDEX IX_LasnaolotAMK_opiskelijaid ON #LasnaolotAMK (opiskeluoikeusid) INCLUDE (opiskelijaid); -- Lasnaolo Kuukaudet, ei siirto-opiskelija, ei poissaoloja UPDATE O SET O.lasnaoloKuukaudet = ( SELECT sum(DATEDIFF(mm, L2.Alkamispaivamaara, L2.Paattymispaivamaara) +1) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) FROM #Opiskeluaika O INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('1','4') -- Läsnä -- 2019-05-05 AND L.db = @mydb AND O.opiskeluoikeusid NOT IN (SELECT PS.opiskeluoikeusid FROM #PoissaEiSiirto PS) -- Ei poissaoloja AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija -- Läsnäolo Lukukaudet, ei siirto-opiskelija, ei poissaoloja UPDATE O SET O.lasnaoloLukukaudet = ( SELECT count(*) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) FROM #Opiskeluaika O INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('1','4') -- Läsnä -- AND L.db = @mydb AND O.opiskeluoikeusid NOT IN (SELECT PS.opiskeluoikeusid FROM #PoissaEiSiirto PS) -- Ei poissaoloja AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija -- Poissaolo Kuukaudet, ei siirto-opiskelija, on poissaoloja UPDATE O SET O.poissaoloKuukaudet = ( SELECT sum(DATEDIFF(mm, L2.Alkamispaivamaara, L2.Paattymispaivamaara) +1) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('2', '3') -- Poissa AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) FROM #Opiskeluaika O INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = P.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('2', '3') -- Poissa AND L.db = @mydb -- Poissaolo Lukukaudet, ei siirto-opiskelija, On poissaoloja UPDATE O SET O.poissaoloLukukaudet = ( SELECT count(*) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('2', '3') -- Poissa AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) FROM #Opiskeluaika O INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = P.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('2', '3') -- Poissa AND L.db = @mydb -- Lasnaolo Kuukaudet, ei siirto-opiskelija, On poissaoloja UPDATE O SET O.lasnaoloKuukaudet = ( SELECT sum(DATEDIFF(mm, L2.Alkamispaivamaara, L2.Paattymispaivamaara) +1) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) FROM #Opiskeluaika O INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid WHERE LT.Koodi IN ('1','4') -- Läsnä -- AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija AND L.db = @mydb -- Läsnäolo Lukukaudet, On poissaoloja, ei siirto-opiskelija, On poissaoloja UPDATE O SET O.lasnaoloLukukaudet = ( SELECT count(*) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) FROM #Opiskeluaika O INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid WHERE LT.Koodi IN ('1','4') -- Läsnä -- AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija AND L.db = @mydb ------------------------------------------------------------------------------------------------------------------- --- #SiirtoOpiskelijan Läsnäolot INSERT INTO #SiirtoOpiskelija_vanhat_lasnaolot (opiskelijaid, opiskeluoikeusid, opintosuoritusid ) SELECT S.opiskelijaid, S.opiskeluoikeusid, S.opintosuoritusid FROM #SiirtoOpiskelija S WHERE S.opiskeluoikeusid IN ( SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL JOIN #LasnaolotAMK L ON L.OpiskeluoikeusID = S.opiskeluoikeusid JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE OPL.OpiskeluoikeusID = S.opiskeluoikeusid AND L.db = @mydb AND OPL.db = @mydb AND LT.Koodi IN ('1','4') -- Läsnä -- -- Läsnäoloja entisessä ) CREATE NONCLUSTERED INDEX IX_SiirtoopiskelijaLasna_opiskelijaid ON #SiirtoOpiskelija_vanhat_lasnaolot (opiskeluoikeusid) -- #SiirtoOpiskelijan läsnäolot ENNEN SIIRTOA UPDATE MY SET MY.lasnaolo_lukukaudet = COALESCE( ( SELECT OL.Maara FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OL JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = OL.Lukukausi_ilm_tilaID WHERE OL.OpiskeluoikeusID = MY.opiskeluoikeusid AND OL.db = @mydb AND LT.Koodi IN ('1','4') -- Läsnä -- ) , 0 ) FROM #SiirtoOpiskelija_vanhat_lasnaolot MY WHERE MY.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL WHERE OPL.db = @mydb AND OPL.OpiskeluoikeusID = MY.opiskeluoikeusid) -- #SiirtoOpiskelijan Läsnäolo Lukukaudet SIIRRON JÄLKEEN UPDATE O SET O.lasnaoloLukukaudet = COALESCE( ( SELECT count(*) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) , 0 ) FROM #Opiskeluaika O INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE O.opiskeluoikeusid IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) AND LT.Koodi IN ('1') -- Läsnä AND L.db = @mydb -- Vanhat + uudet läsnäolot Lukukaudet UPDATE O SET O.lasnaoloLukukaudet = O.lasnaoloLukukaudet + SP.lasnaolo_lukukaudet , O.lukukaudet = O.lasnaoloLukukaudet + SP.lasnaolo_lukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid UPDATE O SET O.lasnaoloKuukaudet = COALESCE( ( CASE WHEN O.lasnaoloLukukaudet%2 = 0 THEN O.lasnaoloLukukaudet*6 --Kokonainen lukuvuosi WHEN O.lasnaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) >= 8 THEN 5 -- Syyskausi WHEN O.lasnaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) <= 7 THEN 7 -- Kevätkausi WHEN O.lasnaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) >= 8 THEN (O.lasnaoloLukukaudet*6 + 5) -- Syyskausi WHEN O.lasnaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) <= 7 THEN (O.lasnaoloLukukaudet*6 + 7) -- Kevätkausi END ) , 0 ) FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- #SiirtoOpiskelijan POISSAOLOT INSERT INTO #SiirtoOpiskelija_vanhat_poissaolot (opiskelijaid, opiskeluoikeusid, opintosuoritusid ) SELECT S.opiskelijaid, S.opiskeluoikeusid, S.opintosuoritusid FROM #SiirtoOpiskelija S WHERE S.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL JOIN #LasnaolotAMK L ON L.OpiskeluoikeusID = S.opiskeluoikeusid JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE OPL.OpiskeluoikeusID = S.opiskeluoikeusid AND L.db = @mydb AND LT.Koodi IN ('2','3') ) CREATE NONCLUSTERED INDEX IX_SiirtoopiskelijaPoissa_opiskelijaid ON #SiirtoOpiskelija_vanhat_poissaolot (opiskeluoikeusid) -- #SiirtoOpiskelijan AIEMMAT POISSAOLOT UPDATE MY SET MY.poissa_lukukaudet = COALESCE( ( SELECT SUM(OL.Maara) FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OL JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = OL.Lukukausi_ilm_tilaID WHERE OL.OpiskeluoikeusID = MY.opiskeluoikeusid AND OL.db = @mydb AND LT.Koodi IN ('2','3') -- Poissa, muu syy Poissa, ei kuluta opintoaikaa ) , 0 ) FROM #SiirtoOpiskelija_vanhat_poissaolot MY WHERE MY.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL WHERE OPL.OpiskeluoikeusID = MY.opiskeluoikeusid) -- #SiirtoOpiskelijan Poissaolot SIIRRON JÄLKEEN Lukukaudet UPDATE O SET O.poissaoloLukukaudet = COALESCE( ( SELECT count(*) FROM #LasnaolotAMK L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('2','3') -- Poissa AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND O.opiskeluoikeusid = L2.OpiskeluoikeusID ) , 0 ) FROM #Opiskeluaika O INNER JOIN #LasnaolotAMK L ON L.opiskeluoikeusid = O.opiskeluoikeusid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE O.opiskeluoikeusid IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) AND LT.Koodi IN ('2','3') -- Poissa AND L.db = @mydb -- Vanhat ja uudet poissaolot Lukukaudet UPDATE O SET O.poissaoloLukukaudet = O.poissaoloLukukaudet + SP.poissa_lukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- Poissa olo KUUKAUSISSA, syksyllä, keväällä, koko lukuvuosi UPDATE O SET O.poissaoloKuukaudet = ( CASE WHEN O.poissaoloLukukaudet%2 = 0 THEN O.poissaoloLukukaudet*6 --Kokonainen lukuvuosi WHEN O.poissaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) >= 8 THEN 5 -- Syyskausi WHEN O.poissaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) <= 7 THEN 7 -- Kevätkausi WHEN O.poissaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) >= 8 THEN (O.poissaoloLukukaudet*6 + 5) -- Syyskausi WHEN O.poissaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) <= 7 THEN (O.poissaoloLukukaudet*6 + 7) -- Kevätkausi END ) FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- 0 käytetty aika = 0 UPDATE O SET O.kaytetty_aika_kk = O.kuukausia , O.KokonaisAika_kk = O.kuukausia FROM #Opiskeluaika O JOIN #SiirtoOpiskelija S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- siirto-opiskelija UPDATE O SET O.KokonaisAika_kk = O.lasnaoloKuukaudet + O.poissaoloKuukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- SIIRTO-opiskelija, opintojen käytetty aika läsnä - poissaolo UPDATE O SET O.kaytetty_aika_kk = O.KokonaisAika_kk - O.poissaoloKuukaudet , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- Loppu siirto-opiskelijat ---------------------------------------------------------------------------------------------------------- -- POISSA olleet -- Kuukausissa käytetty aika UPDATE O SET O.kaytetty_aika_kk = O.kuukausia , O.KokonaisAika_kk = O.kuukausia FROM #Opiskeluaika O JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid -- Kuukausissa käytetty aika - poissaolot pois laskettu UPDATE O SET O.kaytetty_aika_kk = (O.kaytetty_aika_kk - O.poissaoloKuukaudet) , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid -- MUUT , EI POISSA oloja EI SIIRTO-opiskelija, laskettu heti alussa -- Läsnäolo Lukukaudet, ei siirto-opiskelija, ei poissaoloja UPDATE O SET O.KokonaisAika_kk = O.kuukausia , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O WHERE O.opiskeluoikeusid NOT IN (SELECT P.opiskeluoikeusid FROM #PoissaEiSiirto P) AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- SELECT 'lukukaudet 0', * FROM #Opiskeluaika O WHERE O.lukukaudet = 0 OR O.lukukaudet IS NULL END -- YO Yliopistot IF ( @kk_tyyppi = 42 AND @onOOLukukausi = 0) BEGIN -- Nopeampi näin kuin suoraan Virta tauluun joini INSERT INTO #LasnaolotYO ( opiskelijaid, Alkamispaivamaara, Paattymispaivamaara, db, opiskelijaAvain, Lukukausi_ilmoittautumisen_tilaID ) SELECT DISTINCT L.OpiskelijaID, L.Alkamispaivamaara, L.Paattymispaivamaara, L.db, O.avain AS OpiskelijaAvain, L.Lukukausi_ilmoittautumisen_tilaID FROM virta.dbo.Lukukausi_ilmoittautuminen L JOIN virta.dbo.Opiskelija O ON O.id = L.OpiskelijaID -- JOIN #Tutkinnon_suorittaneet T ON T.opiskelijaid = L.OpiskelijaID -- JOIN #Opiskeluaika OA ON OA.opiskeluoikeusid = T.opiskeluoikeusid WHERE L.db = @mydb AND O.db = @mydb -- Ei tutkinnon jälkeisiä AND L.Alkamispaivamaara < T.tutkinnonsuorituspvm -- Ei opiskeluoikeuden edeltäviä AND L.Paattymispaivamaara > OA.ooAlkamispvm AND O.id IN (SELECT T.opiskelijaid FROM #Tutkinnon_suorittaneet T WHERE T.opiskelijaid = L.OpiskelijaID) CREATE NONCLUSTERED INDEX IX_Lasnaolot_opiskelijaid ON #LasnaolotYO (opiskelijaid) -- Lasnaolo Kuukaudet, ei siirto-opiskelija, ei poissaoloja UPDATE O SET O.lasnaoloKuukaudet = ( SELECT sum(DATEDIFF(mm, L2.Alkamispaivamaara, L2.Paattymispaivamaara) +1) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND L2.Paattymispaivamaara > O.ooAlkamispvm AND L2.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.opiskelijaid = O.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('1','4') -- Läsnä -- 2019-05-05 AND L.db = @mydb AND O.opiskelijaid NOT IN (SELECT PS.opiskelijaid FROM #PoissaEiSiirto PS) -- Ei poissaoloja AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Läsnäolo Lukukaudet, ei siirto-opiskelija, ei poissaoloja UPDATE O SET O.lasnaoloLukukaudet = ( SELECT count(*) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND L2.Paattymispaivamaara > O.ooAlkamispvm AND L2.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.OpiskelijaID = O.OpiskelijaID INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('1','4') -- Läsnä -- 2019-05-05 AND L.db = @mydb AND O.opiskelijaid NOT IN (SELECT PS.opiskelijaid FROM #PoissaEiSiirto PS) -- Ei poissaoloja AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Poissaolo Kuukaudet, ei siirto-opiskelija, on poissaoloja UPDATE O SET O.poissaoloKuukaudet = ( SELECT sum(DATEDIFF(mm, L2.Alkamispaivamaara, L2.Paattymispaivamaara) +1) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('2', '3') -- Poissa AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND L2.Paattymispaivamaara > O.ooAlkamispvm AND L2.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' ) FROM #Opiskeluaika O INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid INNER JOIN #LasnaolotYO L ON L.opiskelijaid = P.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('2', '3') -- Poissa AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Poissaolo Lukukaudet, ei siirto-opiskelija, On poissaoloja UPDATE O SET O.poissaoloLukukaudet = ( SELECT count(*) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('2', '3') -- Poissa AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND L2.Paattymispaivamaara > O.ooAlkamispvm AND L2.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' ) FROM #Opiskeluaika O INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid INNER JOIN #LasnaolotYO L ON L.opiskelijaid = P.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE LT.Koodi IN ('2', '3') -- Poissa AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Lasnaolo Kuukaudet, ei siirto-opiskelija, On poissaoloja UPDATE O SET O.lasnaoloKuukaudet = ( SELECT sum(DATEDIFF(mm, L2.Alkamispaivamaara, L2.Paattymispaivamaara) +1) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND L2.Paattymispaivamaara > O.ooAlkamispvm AND L2.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.opiskelijaid = O.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid WHERE LT.Koodi IN ('1','4') -- Läsnä -- AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Läsnäolo Lukukaudet, On poissaoloja, ei siirto-opiskelija, On poissaoloja UPDATE O SET O.lasnaoloLukukaudet = ( SELECT count(*) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid AND L2.Paattymispaivamaara > O.ooAlkamispvm AND L2.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.opiskelijaid = O.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID INNER JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid WHERE LT.Koodi IN ('1','4') -- Läsnä -- 2019-05-05 AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) -- Ei siirto-opiskelija AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- -- SELECT 'oid', * FROM #Opiskeluaika WHERE opiskeluoikeusid = @oid ------------------------------------------------------------------------------------------------------------------- --- #SiirtoOpiskelijan Läsnäolot INSERT INTO #SiirtoOpiskelija_vanhat_lasnaolot (opiskelijaid, opiskeluoikeusid, opintosuoritusid ) SELECT S.opiskelijaid, S.opiskeluoikeusid, S.opintosuoritusid FROM #SiirtoOpiskelija S WHERE S.opiskeluoikeusid IN ( SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.opiskelijaid = S.opiskelijaid JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE OPL.OpiskeluoikeusID = S.opiskeluoikeusid AND L.db = @mydb AND OPL.db = @mydb AND LT.Koodi IN ('1','4') -- Läsnä -- -- Läsnäoloja entisessä ) CREATE NONCLUSTERED INDEX IX_SiirtoopiskelijaLasna_opiskelijaid ON #SiirtoOpiskelija_vanhat_lasnaolot (opiskeluoikeusid) -- #SiirtoOpiskelijan läsnäolot ENNEN SIIRTOA UPDATE MY SET MY.lasnaolo_lukukaudet = COALESCE( ( SELECT OL.Maara FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OL JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = OL.Lukukausi_ilm_tilaID WHERE OL.OpiskeluoikeusID = MY.opiskeluoikeusid AND OL.db = @mydb AND LT.Koodi IN ('1','4') -- Läsnä -- ) , 0 ) FROM #SiirtoOpiskelija_vanhat_lasnaolot MY WHERE MY.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL WHERE OPL.db = @mydb AND OPL.OpiskeluoikeusID = MY.opiskeluoikeusid) -- #SiirtoOpiskelijan Läsnäolo Lukukaudet SIIRRON JÄLKEEN UPDATE O SET O.lasnaoloLukukaudet = COALESCE( ( SELECT count(*) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid ) , 0 ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.opiskelijaid = O.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE O.opiskeluoikeusid IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) AND LT.Koodi IN ('1','4') -- Läsnä -- 2019-05-05 AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Vanhat + uudet läsnäolot Lukukaudet UPDATE O SET O.lasnaoloLukukaudet = O.lasnaoloLukukaudet + SP.lasnaolo_lukukaudet , O.lukukaudet = O.lasnaoloLukukaudet + SP.lasnaolo_lukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid UPDATE O SET O.lasnaoloKuukaudet = COALESCE( ( CASE WHEN O.lasnaoloLukukaudet%2 = 0 THEN O.lasnaoloLukukaudet*6 --Kokonainen lukuvuosi WHEN O.lasnaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) >= 8 THEN 5 -- Syyskausi WHEN O.lasnaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) <= 7 THEN 7 -- Kevätkausi WHEN O.lasnaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) >= 8 THEN (O.lasnaoloLukukaudet*6 + 5) -- Syyskausi WHEN O.lasnaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) <= 7 THEN (O.lasnaoloLukukaudet*6 + 7) -- Kevätkausi END ) , 0 ) FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- #SiirtoOpiskelijan POISSAOLOT INSERT INTO #SiirtoOpiskelija_vanhat_poissaolot (opiskelijaid, opiskeluoikeusid, opintosuoritusid ) SELECT S.opiskelijaid, S.opiskeluoikeusid, S.opintosuoritusid FROM #SiirtoOpiskelija S WHERE S.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.opiskelijaid = S.opiskelijaid JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE OPL.OpiskeluoikeusID = S.opiskeluoikeusid AND L.db = @mydb AND LT.Koodi IN ('2','3') ) CREATE NONCLUSTERED INDEX IX_SiirtoopiskelijaPoissa_opiskelijaid ON #SiirtoOpiskelija_vanhat_poissaolot (opiskeluoikeusid) -- #SiirtoOpiskelijan AIEMMAT POISSAOLOT UPDATE MY SET MY.poissa_lukukaudet = COALESCE( ( SELECT SUM(OL.Maara) FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OL JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = OL.Lukukausi_ilm_tilaID WHERE OL.OpiskeluoikeusID = MY.opiskeluoikeusid AND OL.db = @mydb AND LT.Koodi IN ('2','3') -- Poissa, muu syy Poissa, ei kuluta opintoaikaa ) , 0 ) FROM #SiirtoOpiskelija_vanhat_poissaolot MY WHERE MY.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL WHERE OPL.OpiskeluoikeusID = MY.opiskeluoikeusid) -- #SiirtoOpiskelijan Poissaolot SIIRRON JÄLKEEN Lukukaudet UPDATE O SET O.poissaoloLukukaudet = COALESCE( ( SELECT count(*) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('2','3') -- Poissa AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid ) , 0 ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.opiskelijaid = O.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE O.opiskeluoikeusid IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) AND LT.Koodi IN ('2','3') -- Poissa AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Vanhat ja uudet poissaolot Lukukaudet UPDATE O SET O.poissaoloLukukaudet = O.poissaoloLukukaudet + SP.poissa_lukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- Poissa olo KUUKAUSISSA, syksyllä, keväällä, koko lukuvuosi UPDATE O SET O.poissaoloKuukaudet = ( CASE WHEN O.poissaoloLukukaudet%2 = 0 THEN O.poissaoloLukukaudet*6 --Kokonainen lukuvuosi WHEN O.poissaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) >= 8 THEN 5 -- Syyskausi WHEN O.poissaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) <= 7 THEN 7 -- Kevätkausi WHEN O.poissaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) >= 8 THEN (O.poissaoloLukukaudet*6 + 5) -- Syyskausi WHEN O.poissaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) <= 7 THEN (O.poissaoloLukukaudet*6 + 7) -- Kevätkausi END ) FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- käytetty aika UPDATE O SET O.kaytetty_aika_kk = O.kuukausia , O.KokonaisAika_kk = O.kuukausia FROM #Opiskeluaika O JOIN #SiirtoOpiskelija S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- siirto-opiskelija UPDATE O SET O.KokonaisAika_kk = O.lasnaoloKuukaudet + O.poissaoloKuukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- SIIRTO-opiskelija, opintojen käytetty aika läsnä - poissaolo UPDATE O SET O.kaytetty_aika_kk = O.KokonaisAika_kk - O.poissaoloKuukaudet , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- siirto-opiskelijat Loppu ---------------------------------------------------------------------------------------------------------- -- POISSA olleet -- Kuukausissa käytetty aika UPDATE O SET O.kaytetty_aika_kk = O.kuukausia , O.KokonaisAika_kk = O.kuukausia FROM #Opiskeluaika O JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid -- Kuukausissa käytetty aika - poissaolot pois laskettu UPDATE O SET O.kaytetty_aika_kk = (O.kaytetty_aika_kk - O.poissaoloKuukaudet) , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid -- MUUT , EI POISSA oloja EI SIIRTO-opiskelija, laskettu heti alussa -- Läsnäolo Lukukaudet, ei siirto-opiskelija, ei poissaoloja UPDATE O SET O.KokonaisAika_kk = O.kuukausia , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O WHERE O.opiskeluoikeusid NOT IN (SELECT P.opiskeluoikeusid FROM #PoissaEiSiirto P) AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) END
Poissaoloja Expand source-- POISSA olleet -- Kuukausissa käytetty aika UPDATE O SET O.kaytetty_aika_kk = O.kuukausia , O.KokonaisAika_kk = O.kuukausia FROM #Opiskeluaika O JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid -- Kuukausissa käytetty aika - poissaolot pois laskettu UPDATE O SET O.kaytetty_aika_kk = (O.kaytetty_aika_kk - O.poissaoloKuukaudet) , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O JOIN #PoissaEiSiirto P ON P.opiskelijaid = O.opiskelijaid AND P.opiskeluoikeusid = O.opiskeluoikeusid -- MUUT , EI POISSA oloja EI SIIRTO-opiskelija, laskettu heti alussa -- Läsnäolo Lukukaudet, ei siirto-opiskelija, ei poissaoloja UPDATE O SET O.KokonaisAika_kk = O.kuukausia , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O WHERE O.opiskeluoikeusid NOT IN (SELECT P.opiskeluoikeusid FROM #PoissaEiSiirto P) AND O.opiskeluoikeusid NOT IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S)
8.Siirto-opiskelija, aiemmin käytetyt läsnäolot, poissaolot Opiskeluoikeuden siirtyvä opiskelijan littyvät lukukaudet
Onko kysessä siirto-opiskelija päätellään sen tiedon mukaan onko Opiskeluoikeuteen joka tutkintosuoritukseen liitetty alkuperäisen opiskeluoikeus päivämäärä Siirtopaivamaara tyhjä vai ei ( OO.Siirtopaivamaara IS NOT NULL)
ja aiemmat käytetyt lukukaudet (läsnä-poissaolot) siihen littyvät lukumäärän mukaan. Mikäli siirretty opiskeluoikeus ei näin ole kirjattu ilman siirtopaivamaara tietoa tulee "uuden" opiskeluoikeuden alkamispäivämäärä olla sama kuin alkuperäisen alkamispäivämäärä.Siirto-opiskelija Expand source------------------------------------------------------------------------------------------------------------------- --- #SiirtoOpiskelijan Läsnäolot INSERT INTO #SiirtoOpiskelija_vanhat_lasnaolot (opiskelijaid, opiskeluoikeusid, opintosuoritusid ) SELECT S.opiskelijaid, S.opiskeluoikeusid, S.opintosuoritusid FROM #SiirtoOpiskelija S WHERE S.opiskeluoikeusid IN ( SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.opiskelijaid = S.opiskelijaid JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE OPL.OpiskeluoikeusID = S.opiskeluoikeusid AND L.db = @mydb AND OPL.db = @mydb AND LT.Koodi IN ('1','4') -- Läsnä -- -- Läsnäoloja entisessä ) CREATE NONCLUSTERED INDEX IX_SiirtoopiskelijaLasna_opiskelijaid ON #SiirtoOpiskelija_vanhat_lasnaolot (opiskeluoikeusid) -- #SiirtoOpiskelijan läsnäolot ENNEN SIIRTOA UPDATE MY SET MY.lasnaolo_lukukaudet = COALESCE( ( SELECT OL.Maara FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OL JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = OL.Lukukausi_ilm_tilaID WHERE OL.OpiskeluoikeusID = MY.opiskeluoikeusid AND OL.db = @mydb AND LT.Koodi IN ('1','4') -- Läsnä -- ) , 0 ) FROM #SiirtoOpiskelija_vanhat_lasnaolot MY WHERE MY.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL WHERE OPL.db = @mydb AND OPL.OpiskeluoikeusID = MY.opiskeluoikeusid) -- #SiirtoOpiskelijan Läsnäolo Lukukaudet SIIRRON JÄLKEEN UPDATE O SET O.lasnaoloLukukaudet = COALESCE( ( SELECT count(*) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('1','4') -- Läsnä -- AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid ) , 0 ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.opiskelijaid = O.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE O.opiskeluoikeusid IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) AND LT.Koodi IN ('1','4') -- Läsnä -- 2019-05-05 AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Vanhat + uudet läsnäolot Lukukaudet UPDATE O SET O.lasnaoloLukukaudet = O.lasnaoloLukukaudet + SP.lasnaolo_lukukaudet , O.lukukaudet = O.lasnaoloLukukaudet + SP.lasnaolo_lukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid UPDATE O SET O.lasnaoloKuukaudet = COALESCE( ( CASE WHEN O.lasnaoloLukukaudet%2 = 0 THEN O.lasnaoloLukukaudet*6 --Kokonainen lukuvuosi WHEN O.lasnaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) >= 8 THEN 5 -- Syyskausi WHEN O.lasnaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) <= 7 THEN 7 -- Kevätkausi WHEN O.lasnaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) >= 8 THEN (O.lasnaoloLukukaudet*6 + 5) -- Syyskausi WHEN O.lasnaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) <= 7 THEN (O.lasnaoloLukukaudet*6 + 7) -- Kevätkausi END ) , 0 ) FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- #SiirtoOpiskelijan POISSAOLOT INSERT INTO #SiirtoOpiskelija_vanhat_poissaolot (opiskelijaid, opiskeluoikeusid, opintosuoritusid ) SELECT S.opiskelijaid, S.opiskeluoikeusid, S.opintosuoritusid FROM #SiirtoOpiskelija S WHERE S.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL JOIN virta.dbo.Lukukausi_ilmoittautuminen L ON L.opiskelijaid = S.opiskelijaid JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE OPL.OpiskeluoikeusID = S.opiskeluoikeusid AND L.db = @mydb AND LT.Koodi IN ('2','3') ) CREATE NONCLUSTERED INDEX IX_SiirtoopiskelijaPoissa_opiskelijaid ON #SiirtoOpiskelija_vanhat_poissaolot (opiskeluoikeusid) -- #SiirtoOpiskelijan AIEMMAT POISSAOLOT UPDATE MY SET MY.poissa_lukukaudet = COALESCE( ( SELECT SUM(OL.Maara) FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OL JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = OL.Lukukausi_ilm_tilaID WHERE OL.OpiskeluoikeusID = MY.opiskeluoikeusid AND OL.db = @mydb AND LT.Koodi IN ('2','3') -- Poissa, muu syy Poissa, ei kuluta opintoaikaa ) , 0 ) FROM #SiirtoOpiskelija_vanhat_poissaolot MY WHERE MY.opiskeluoikeusid IN (SELECT OPL.OpiskeluoikeusID FROM virta.dbo.Op_oik_siir_opisk_liittyva_lukukausi OPL WHERE OPL.OpiskeluoikeusID = MY.opiskeluoikeusid) -- #SiirtoOpiskelijan Poissaolot SIIRRON JÄLKEEN Lukukaudet UPDATE O SET O.poissaoloLukukaudet = COALESCE( ( SELECT count(*) FROM #LasnaolotYO L2 INNER JOIN virta.dbo.Lukukausi_ilm_tila LT2 ON LT2.id = L2.Lukukausi_ilmoittautumisen_tilaID WHERE LT2.Koodi IN ('2','3') -- Poissa AND L2.db = @mydb AND L2.OpiskelijaID = O.opiskelijaid ) , 0 ) FROM #Opiskeluaika O INNER JOIN #LasnaolotYO L ON L.opiskelijaid = O.opiskelijaid INNER JOIN virta.dbo.Lukukausi_ilm_tila LT ON LT.id = L.Lukukausi_ilmoittautumisen_tilaID WHERE O.opiskeluoikeusid IN (SELECT S.opiskeluoikeusid FROM #SiirtoOpiskelija S) AND LT.Koodi IN ('2','3') -- Poissa AND L.db = @mydb AND L.Paattymispaivamaara > O.ooAlkamispvm AND L.Paattymispaivamaara <= CONVERT(varchar(4), @tutkintoSuoritusVuosi)+'-12-31' -- Vanhat ja uudet poissaolot Lukukaudet UPDATE O SET O.poissaoloLukukaudet = O.poissaoloLukukaudet + SP.poissa_lukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- Poissa olo KUUKAUSISSA, syksyllä, keväällä, koko lukuvuosi UPDATE O SET O.poissaoloKuukaudet = ( CASE WHEN O.poissaoloLukukaudet%2 = 0 THEN O.poissaoloLukukaudet*6 --Kokonainen lukuvuosi WHEN O.poissaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) >= 8 THEN 5 -- Syyskausi WHEN O.poissaoloLukukaudet = 1 AND MONTH(O.ooAlkamispvm) <= 7 THEN 7 -- Kevätkausi WHEN O.poissaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) >= 8 THEN (O.poissaoloLukukaudet*6 + 5) -- Syyskausi WHEN O.poissaoloLukukaudet%3 = 0 AND MONTH(O.ooAlkamispvm) <= 7 THEN (O.poissaoloLukukaudet*6 + 7) -- Kevätkausi END ) FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot SP ON SP.opiskeluoikeusid = O.opiskeluoikeusid -- käytetty aika UPDATE O SET O.kaytetty_aika_kk = O.kuukausia , O.KokonaisAika_kk = O.kuukausia FROM #Opiskeluaika O JOIN #SiirtoOpiskelija S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- siirto-opiskelija UPDATE O SET O.KokonaisAika_kk = O.lasnaoloKuukaudet + O.poissaoloKuukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_lasnaolot S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- SIIRTO-opiskelija, opintojen käytetty aika läsnä - poissaolo UPDATE O SET O.kaytetty_aika_kk = O.KokonaisAika_kk - O.poissaoloKuukaudet , O.lukukaudet = O.lasnaoloLukukaudet FROM #Opiskeluaika O JOIN #SiirtoOpiskelija_vanhat_poissaolot S ON S.opiskelijaid = O.opiskelijaid AND S.opiskeluoikeusid = O.opiskeluoikeusid -- siirto-opiskelijat Loppu ----------------------------------------------------------------------------------------------------------
9. Kerätään yhteen ja lasketaan onko tutkinto suoritettu määräajassa:
käytetyt läsnälukukaudet <= tavoiteaika lukukausissa
tai
opiskeluaika kuukausissa (poislaskettu ajasta poissaoloaika kuukausissa) <= tavoiteaika kuukausissa
tavoiteajassa kyllä eiCASE -- Jos käytetty läsnäkaudet alle tai sama kuin tavoiteaika lukukausien määrä
WHEN O.lukukaudet >
0
AND O.lukukaudet <= TA.tavoiteaika_lukukausia THEN
1
-- Jos aika kuukausissa alle tai sama kuin tavoiteaika kuukausien määrä
WHEN O.kaytetty_aika_kk >
0
AND O.kaytetty_aika_kk <= TA.tavoiteaika_kuukausia THEN
1
ELSE
0
END
AS tavoite_ajassa_valmistunut
O.lukukaudet = käytetty läsnälukukaudet (Lukukausi ilmoittautumiset, tila 1=Läsnä)
O.kaytetty_aika_kk = opiskeluoikeuteen käytetty aika (opiskeluoikeus alkamispvm - tutkinnon suorituspvm ) poislaskettu mahdollinen poissaoloaika (2=poissa,3=poissa, ei kuluta opintoaikaa)
TA.tavoiteaika_lukukausia = tavoite_lukukaudet 4.Poimintakuvaus taulukossa
TA.tavoiteaika_kuukausia = tavoite_kuukaudet 4.Poimintakuvaus taulukossa
tavoite_ajassa_valmistunut
1 = Kyllä. Valmistunut tavoiteajassa
0 = Ei. Ei valmistunut tavoiteajassa
Tavoiteajassa Expand sourceSELECT DISTINCT @mydb AS kk, @oppilaitosnro AS oppilaitosnro, T.opiskelijaAvain, T.opiskeluoikeusAvain, T.opintosuoritusAvain, T.tutkintokoodi, O.ooAlkamispvm, T.tutkinnonsuorituspvm , TA.vaadittu_op , TA.tavoiteaika_lukukausia -- Tavoiteaika lukukausissa , O.lukukaudet , O.lasnaoloLukukaudet -- Läsnäolo lukukausia , O.lasnaoloKuukaudet -- Läsnäolo kuukausia , O.poissaoloLukukaudet -- Poissaolo lukukausia , O.poissaoloKuukaudet -- Poissaolo kuukausia , TA.tavoiteaika_kuukausia -- Tavoiteaika kuukausissa , O.kaytetty_aika_kk -- Kaytetty aika kuukausissa , O.KokonaisAika_kk -- Läsnä ja poissaolo , @tutkintoSuoritusVuosi -- tutkintovuosi , TA.vaadittu_op/60.0 AS tavoiteaika_vuosia , CASE -- Jos käytetty läsnäkaudet alle tai sama kuin tavoiteaika lukukausien määrä WHEN O.lukukaudet > 0 AND O.lukukaudet <= TA.tavoiteaika_lukukausia THEN 1 -- Jos aika kuukausissa alle tai sama kuin tavoiteaika kuukausien määrä WHEN O.kaytetty_aika_kk > 0 AND O.kaytetty_aika_kk <= TA.tavoiteaika_kuukausia THEN 1 ELSE 0 END AS tavoite_ajassa_valmistunut , HT.ika , HT.sukupuoli , HT.on_aiempi_tutkinto , ( SELECT 1 FROM virta.dbo.Opiskeluoikeus WHERE Siirtopaivamaara IS NOT NULL AND id = T.opiskeluoikeusid ) siirto_opiskelija FROM #Tutkinnon_suorittaneet T JOIN #Opiskeluaika O ON O.opiskelijaid = T.opiskelijaid AND O.opiskeluoikeusid = T.opiskeluoikeusid AND O.opintosuoritusid = T.opintosuoritusid JOIN #Tavoiteaika TA ON TA.vaadittu_op = T.vaadittu_tutkinnon_laajuus_op JOIN #HenkiloTiedot HT ON HT.opiskelijaid = T.opiskelijaid AND HT.tutkinnonsuorituspvm = T.tutkinnonsuorituspvm
10. Ryhmäkohtaiset kertoimet
Tutkinto suoritettu määräajassa: kerroin 1,5
Tutkinto suoritettu enintään 12 kuukautta määräajan jälkeen: 1,3
Tutkinto suoritettu yli 12 kuukautta määräajan jälkeen: 1Mikäli tutkinnon suorittaja on aiemmin suorittanut suomalaisessa korkeakoulussa samantasoisen tutkinnon, painotetaan ko. tutkintoa kertoimella 0,7.
ryhmä A: kerroin 1
ryhmä B: kerroin 1,75
ryhmä C: kerroin 3Kertoimet Expand source-- T.tutkintokerroin alkuarvo default 1 -- Tutkinto suoritettu tavoiteajassa: kerroin 1,5 UPDATE T SET T.tutkintokerroin = T.tutkintokerroin * 1.5 FROM tavoiteajassa_valmistuneet T WHERE T.tavoite_ajassa_valmistunut = 1 -- Tutkinto suoritettu enintään enintään 12 kk yli: 1,3 -- Kertoinset = 1 tilastointia varten UPDATE T SET T.kertoinSet = 1 , T.tutkintokerroin = T.tutkintokerroin * 1.3 FROM tavoiteajassa_valmistuneet T WHERE ( T.kaytetty_aika_kk - T.tavoiteaika_kuukausia) <= 12 AND ( T.kaytetty_aika_kk - T.tavoiteaika_kuukausia) > 0 AND T.tavoite_ajassa_valmistunut = 0 AND T.kertoinSet = 0 -- Tutkinto suoritettu enintään enintään 2 lukukautta yli: 1,3 -- Kertoinset = 2 tilastointia varten montako ei ollut kertoinset 2 UPDATE T SET T.kertoinSet = 2 , T.tutkintokerroin = T.tutkintokerroin * 1.3 FROM tavoiteajassa_valmistuneet T WHERE ( T.lasnaoloLukukaudet - T.tavoite_lukukaudet) <= 2 AND ( T.lasnaoloLukukaudet - T.tavoite_lukukaudet) > 0 AND T.tavoite_ajassa_valmistunut = 0 AND T.kertoinSet = 0 --Tutkinto suoritettu yli 12 kk yli: 1,0 UPDATE T SET T.tutkintokerroin = T.tutkintokerroin * 1.0 FROM tavoiteajassa_valmistuneet T WHERE ( T.kaytetty_aika_kk - T.tavoiteaika_kuukausia) > 12 AND T.tavoite_ajassa_valmistunut = 0 -- Mikäli tutkinnon suorittaja on aiemmin suorittanut suomalaisessa korkeakoulussa samantasoisen tutkinnon, painotetaan ko. tutkintoa kertoimella 0,7 aiempi tutkinto UPDATE T SET T.tutkintokerroin = T.tutkintokerroin * 0.7 FROM tavoiteajassa_valmistuneet T WHERE T.on_aiempi_tutkinto = 1 -- Ryhmä A UPDATE T SET T.tutkintokerroin = T.tutkintokerroin * 1 FROM tavoiteajassa_valmistuneet T WHERE T.tutkintokoodi IN (SELECT koodi FROM [tavoiteajassa_tutkintoryhmat] WHERE ryhma = 'A') -- Ryhmä B UPDATE T SET T.tutkintokerroin = T.tutkintokerroin * 1.75 FROM tavoiteajassa_valmistuneet T WHERE T.tutkintokoodi IN (SELECT koodi FROM [tavoiteajassa_tutkintoryhmat] WHERE ryhma = 'B') -- Ryhmä C UPDATE T SET T.tutkintokerroin = T.tutkintokerroin * 3 FROM tavoiteajassa_valmistuneet T WHERE T.tutkintokoodi IN (SELECT koodi FROM [tavoiteajassa_tutkintoryhmat] WHERE ryhma = 'C') --Tutkinto suoritettu enintään enintään 12 kk yli: 1,3 UPDATE T SET T.on_enintaan_12kk = 1 , T.on_yli_12kk = 0 FROM tavoiteajassa_valmistuneet T WHERE ( T.kaytetty_aika_kk - T.tavoiteaika_kuukausia) <= 12 AND ( T.kaytetty_aika_kk - T.tavoiteaika_kuukausia) > 0 AND T.tavoite_ajassa_valmistunut = 0 --Tutkinto suoritettu yli 12 kk yli: 1,0 UPDATE T SET T.on_yli_12kk = 1 ,T.on_enintaan_12kk = 0 FROM tavoiteajassa_valmistuneet T WHERE ( T.kaytetty_aika_kk - T.tavoiteaika_kuukausia) > 12 AND T.tavoite_ajassa_valmistunut = 0 -- Ryhmä A UPDATE T SET T.on_ryhma_A = 1 ,T.on_ryhma_B = 0 ,T.on_ryhma_C = 0 FROM tavoiteajassa_valmistuneet T WHERE T.tutkintokoodi IN (SELECT koodi FROM [tavoiteajassa_tutkintoryhmat] WHERE ryhma = 'A') -- Ryhmä B UPDATE T SET T.on_ryhma_B = 1 ,T.on_ryhma_A = 0 ,T.on_ryhma_C = 0 FROM tavoiteajassa_valmistuneet T WHERE T.tutkintokoodi IN (SELECT koodi FROM [tavoiteajassa_tutkintoryhmat] WHERE ryhma = 'B') -- Ryhmä C UPDATE T SET T.on_ryhma_C = 1 ,T.on_ryhma_A = 0 ,T.on_ryhma_B = 0 FROM tavoiteajassa_valmistuneet T WHERE T.tutkintokoodi IN (SELECT koodi FROM [tavoiteajassa_tutkintoryhmat] WHERE ryhma = 'C')
11. Viedään tulosdata kuutioon, raportille: https://extra.vipunen.fi/Raportit/Tavoiteajassa%20tutkinnon%20suorittaneet(luonnos).xlsb?Web=1
Tilastokeskuksen tutkintokoodin avulla koulutusluokittelu, koulutusaste, ala, okm ohjauksen ala ynm.
- No labels
1 Comment
Fredrik Finnberg
Mar 30, 202030.3.2020 Korjattu siirto-opiskelijoiden aiemmat poissaolot laskennan virhe