Hello,Have a query wich calculates the hours an employee works in a month.I use a "UNION" to get all months of the year 2011 (later 2012, 2013, etc...). I think I coul make my query way more efficient.Right now it looks like this:SELECT RES.ID AS RESOURCE_ID, RES.NAME + ', ' + RES.INITIALS AS NAAM, RES.EMPLOYEE_NUMBER AS MEDEWERKER_NUMMER, convert(varchar(10),RES.DATE_OF_BIRTH,105) AS GEBOORTE_DATUM, TGL.AVAILABILITY * 24 AS UREN_PER_WEEK, TGL.VALID_FROM AS GELDIG_VAN, TGL.VALID_UNTIL AS GELDIG_TOT, '201101' AS PERIODE, CAST (rep_pvtest.dbo.HARMONY_PLB_AANTAL_MND_JAAR(TGL.VALID_FROM,TGL.VALID_UNTIL,'2011-02-01','2011-01-01') * rep_pvtest.dbo.HARMONY_PLB_LEEFTIJD (RES.DATE_OF_BIRTH,TGL.AVAILABILITY,@FULLTIME_FTE) + (ISNULL(ROUND(rep_pvtest.dbo.HARMONY_PLB_AANTAL_WERKDG_MAAND(TGL.VALID_FROM,TGL.VALID_UNTIL,'2011-02-01','2011-01-01') / rep_pvtest.dbo.HARMONY_PLB_AANTAL_WERKDG_MAAND_OVERIG(TGL.VALID_FROM,TGL.VALID_UNTIL,'2011-02-01','2011-01-01') * rep_pvtest.dbo.HARMONY_PLB_LEEFTIJD (RES.DATE_OF_BIRTH,TGL.AVAILABILITY,@FULLTIME_FTE) ,2),0)) AS FLOAT) AS 'Overige uren'FROM ROS_RESOURCES AS RESINNER JOIN ROS_TERMS_GROUP_LINES AS TGLON RES.ID = TGL.RSE_IDWHERE 1=1AND RES.ID = @ResourceIDAND TGL.VALID_UNTIL >= '2011-02-01'AND TGL.VALID_FROM <= '2011-01-01'AND -- *** Bepalen ontziebepaling *** (SELECT COUNT(*) FROM ROS_PROPERTY_VALUES AS RPV INNER JOIN ROS_USER_PROPERTIES AS RUP ON RPV.upy_id = RUP.id WHERE (RPV.upy_id = @KENMERK AND RPV.value = @KENMERK_WAARDE) AND (RPV.ID = RES.ID)) = 0 -- Op deze manier kan de ontziebepaling bepaald worden. Deze personen voldoen niet aan de ontziebepaling en krijgen geen extra PLB uren!!!!!UNIONSELECT RES.ID AS RESOURCE_ID, RES.NAME + ', ' + RES.INITIALS AS NAAM, RES.EMPLOYEE_NUMBER AS MEDEWERKER_NUMMER, convert(varchar(10),RES.DATE_OF_BIRTH,105) AS GEBOORTE_DATUM, TGL.AVAILABILITY * 24 AS UREN_PER_WEEK, TGL.VALID_FROM AS GELDIG_VAN, TGL.VALID_UNTIL AS GELDIG_TOT, '201102' AS PERIODE, CAST (rep_pvtest.dbo.HARMONY_PLB_AANTAL_MND_JAAR(TGL.VALID_FROM,TGL.VALID_UNTIL,'2011-03-01','2011-02-01') * rep_pvtest.dbo.HARMONY_PLB_LEEFTIJD (RES.DATE_OF_BIRTH,TGL.AVAILABILITY,@FULLTIME_FTE) + (ISNULL(ROUND(rep_pvtest.dbo.HARMONY_PLB_AANTAL_WERKDG_MAAND(TGL.VALID_FROM,TGL.VALID_UNTIL,'2011-03-01','2011-02-01') / rep_pvtest.dbo.HARMONY_PLB_AANTAL_WERKDG_MAAND_OVERIG(TGL.VALID_FROM,TGL.VALID_UNTIL,'2011-03-01','2011-02-01') * rep_pvtest.dbo.HARMONY_PLB_LEEFTIJD (RES.DATE_OF_BIRTH,TGL.AVAILABILITY,@FULLTIME_FTE) ,2),0)) AS FLOAT) AS 'Overige uren'FROM ROS_RESOURCES AS RESINNER JOIN ROS_TERMS_GROUP_LINES AS TGLON RES.ID = TGL.RSE_IDWHERE 1=1AND RES.ID = @ResourceIDAND TGL.VALID_UNTIL >= '2011-03-01'AND TGL.VALID_FROM <= '2011-02-01'AND -- *** Bepalen ontziebepaling *** (SELECT COUNT(*) FROM ROS_PROPERTY_VALUES AS RPV INNER JOIN ROS_USER_PROPERTIES AS RUP ON RPV.upy_id = RUP.id WHERE (RPV.upy_id = @KENMERK AND RPV.value = @KENMERK_WAARDE) AND (RPV.ID = RES.ID)) = 0 -- Op deze manier kan de ontziebepaling bepaald worden. Deze personen voldoen niet aan de ontziebepaling en krijgen geen extra PLB uren!!!!!UNION201103UNION201104ETC...
I hope that you can help me with this.Thanks very much in advance!