Nous avons une table qui contient des ressources et les jours de travail. Par exemple, une personne pourrait travailler du lundi au vendredi, mais une autre ne pourrait travailler que deux jours par semaine. Voici les données: (. Excuses pour le manque de mise en forme, mais des captures d'écran télécharger wont par notre proxy putain)SQL - Trouver des jours ouvrables à partir des jours travaillés
WorkOnSunday WorkOnMonday WorkOnTuesday WorkOnWednesday WorkOnThursday WorkOnFriday WorkOnSaturday
--------------------------------------------------------------------------------------------------------------
0 1 1 1 1 1 0
0 0 1 1 0 0 0
La question est, comment puis-je obtenir la quantité de jours travaillés dans un mois en utilisant les données ci-dessus? (Les vacances sont la prochaine étape je tente de mettre la main sur la table des vacances que nous avons apparemment.)
Voici ce que j'ai jusqu'à présent:
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2017/12/01'
SET @EndDate = '2018/01/01'
SELECT
(DATEDIFF(dd, @StartDate, @EndDate))
-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
Cela me donne le montant exact des jours de la semaine dans le mois
cela pourrait faire avec normalisant. Avoir une sous-table avec les champs suivants à la place: "ID de ressource", "DayOfWeek", "Works" (où Works est un champ booléen 0/1 et "DayofWeek" est un nombre représentant le jour de la semaine. composé d'ID de ressource et de jour de la semaine, ce qui devrait faciliter l'écriture de requêtes utiles relatives à ces données, par exemple, les dates de début et de fin pour vous permettre de comprendre les changements de fonctionnement. Ce que vous avez maintenant est inflexible et ne vous permettra pas d'obtenir les informations dont vous avez besoin, pas facilement de toute façon – ADyson
Il semble que des informations importantes manquent dans votre première table - en particulier l'ID de ressource et la date de début ou de fin. – Greenspark
Postez votre structure de table correcte – Amit