J'ai une table appelée employee_salary_master dans laquelle nous conservons les dates d'entrée en vigueur et les dates d'entrée de chaque employé dans l'entreprise. Pour le traitement du salaire d'un employé pour un mois, nous devons aller chercher le dernier enregistrement saisi. Si la date d'entrée en vigueur est inférieure à ce mois-ci, nous sélectionnons l'entrée la plus récente. mais si la date d'entrée en vigueur est supérieure à la première date du mois, alors il y aura plus de une date d'entrée en vigueur pour ce moissql server - aide dans la requête
exemple: les données pour un employé sont comme ci-dessous.
SAL_MATSER_ID EMPLOYEE_ID EFFECTIVE_DATE ENTRY_DATE ------------- ----------- -------------- ------------ 1 5814 Jan 6 2006 Jan 12 2006 2 5814 Jan 10 2006 Jul 17 2006 3 5814 Jan 20 2006 Dec 22 2006 4 5814 May 10 2007 Jul 18 2007 5 5814 Nov 1 2007 Dec 18 2007 6 5814 Aug 1 2008 Aug 20 2008 7 5814 May 1 2008 Sep 2 2008 8 5814 Sep 1 2009 Sep 18 2008 9 5814 Nov 1 2008 Apr 20 2009 10 5814 Nov 10 2009 Nov 25 2009 11 5814 Nov 5 2009 Nov 26 2009
Si je dois obtenir le record de novembre 2009, je vous écris ci-dessous la requête
select EMPLOYEE_SALARY_MASTER_ID, EMPLOYEE_ID, EFFECTIVE_DATE, ENTRY_DATE, ARREAR_PROCESS_FLAG from employee_salary_master esm where employee_id = 5814
and (esm.entry_date = (select max(entry_date) from employee_salary_master where employee_id = 5814 and effective_date <= @monthfirstdate)
or (esm.effective_date between @monthfirstdate and @monthlastdate))
qui donne le résultat ci-dessous ..
SAL_MATSER_ID EMPLOYEE_ID EFFECTIVE_DATE ENTRY_DATE ------------- ----------- -------------- ------------ 9 5814 Nov 1 2008 Apr 20 2009 10 5814 Nov 10 2009 Nov 25 2009 11 5814 Nov 5 2009 Nov 26 2009
Ce que je besoin est la suivante Pour le 1er novembre - 4 novembre, le salaire devrait être traité selon employee_salary_masterId - 9 et 5 au 30 novembre nov salaire doit être traité selon employee_salary_masterId - 11.
SAL_MATSER_ID EMPLOYEE_ID EFFECTIVE_DATE ENTRY_DATE ------------- ----------- -------------- ------------ 9 5814 Nov 1 2008 Apr 20 2009 11 5814 Nov 5 2009 Nov 26 2009
S'il vous plaît aidez-moi à construire cette requête.
Quelle est la règle qui exclut le record le 10 novembre? Vous dites que le 5 au 30 novembre devrait être traité avec le numéro de salaire 11, et non avec le numéro 10 qui commence le 10 novembre. Est-il exclu parce que la date d'entrée est plus tôt? – Ray