SQL Server ajoutant manuellement un logging d'logging à une vue

J'ai une vue qui contient datatables vues dans l'image ci-dessous. Le sharepoint vue montre combien de jours de travail sont disponibles chaque mois pour l'exercice en cours, ce qui élimine les vacances scolaires / bancaires.

Comme le mois d'août a zéro jour disponible, il a exclu ce mois de la vue.

Comme le nombre total de jours disponibles sera toujours nul pour le mois d'août, il semble acceptable de coder en dur le code SQL pour avoir toujours 0 pour le mois d'août, ainsi qu'un logging d'avril à août qui sera le même qu'en avril-juillet.

Quel serait le meilleur moyen d'append ces 2 loggings, et où environ dans le code devrait-il être placé voir l'exemple de la disposition du code:

voir le lien (question répondue) pour la disposition du code:

SQL: nombre total de jours ouvrables par mois less les jours fériés pour l'exercice en cours

entrez la description de l'image ici

Pour ma réponse, je suppose que vous avez une vue vDays avec des colonnes qui correspondent à votre capture d'écran: period , availabledays , year .

Pour append des périodes de zéro jour à vos résultats, quel que soit le mois, il peut y avoir zéro (ce qui correspondra à août et à tout autre mois qui aura zéro jour), vous pouvez étendre votre vue comme ceci:

 WITH Mths (Mth) AS ( SELECT 'January' UNION SELECT 'February' UNION SELECT 'March' UNION SELECT 'April' UNION SELECT 'May' UNION SELECT 'June' UNION SELECT 'July' UNION SELECT 'August' UNION SELECT 'September' UNION SELECT 'October' UNION SELECT 'November' UNION SELECT 'December' UNION SELECT 'April - January' UNION SELECT 'April - February' UNION SELECT 'April - March' UNION SELECT 'April - May' UNION SELECT 'April - June' UNION SELECT 'April - July' UNION SELECT 'April - August' UNION SELECT 'April - September' UNION SELECT 'April - October' UNION SELECT 'April - November' UNION SELECT 'April - December' ), Years (Year) AS ( SELECT DISTINCT year FROM vDays ), ZeroPeriods (Mth, Years) AS ( SELECT Mth, Year FROM Mths, Years ), JoinedData (Mth, AvailableDays, Year) AS ( SELECT Mth, 0, Years FROM ZeroPeriods UNION ALL SELECT period, availabledays, year FROM vDays ), GroupedData (Mth, AvailableDays, Year) AS ( SELECT Mth, SUM(AvailableDays), Year FROM JoinedData GROUP BY Mth, Year ) SELECT * FROM GroupedData ORDER BY Year, CASE UPPER(LEFT(Mth, 3)) WHEN 'JAN' THEN 1 WHEN 'FEB' THEN 2 WHEN 'MAR' THEN 3 WHEN 'APR' THEN 4 WHEN 'MAY' THEN 5 WHEN 'JUN' THEN 6 WHEN 'JUL' THEN 7 WHEN 'AUG' THEN 8 WHEN 'SEP' THEN 9 WHEN 'OCT' THEN 10 WHEN 'NOV' THEN 11 ELSE 12 END; 

J'ai divisé ceci en beaucoup de requêtes séparées, bien que certaines pourraient être fusionnées en sous-requêtes, mais le faire comme ceci le rend beaucoup plus clair à comprendre.

Est-ce que cela vous donnerait le résultat souhaité?

 SELECT Period, DaysAvailable, Year FROM YOURVIEW UNION ALL SELECT DISTINCT 'April-August', DaysAvailable, Year FROM YOURVIEW where Period = 'April-July' UNION ALL SELECT DISTINCT 'August', 0, YEAR FROM YOURVIEW