私たちは、リソースとその作業日を含むテーブルを持っています。たとえば、1人は月曜日から金曜日まで働くことができますが、もう1人はその週の2日間だけ働くことができます。ここ はデータである:(書式設定が、スクリーンショットが文句を言わない私たちのいまいましいプロキシを介してアップロードするの不足のために謝罪)SQL - 作業日からの就業日の検索
WorkOnSunday WorkOnMonday WorkOnTuesday WorkOnWednesday WorkOnThursday WorkOnFriday WorkOnSaturday
--------------------------------------------------------------------------------------------------------------
0 1 1 1 1 1 0
0 0 1 1 0 0 0
そこで問題は、私が働いていた日の量を得るのですか、です上記のデータを使用して月ですか? (。休日は、私たちは明らかに持っている休日テーブルのホールドを取得しようとしています次の段階です)
ここでは、私がこれまで持っているものです。
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)
これは私に正しい金額を与えます平日の平日の
であなたのカウントを行うことができたら。 「Resource ID」、「DayOfWeek」、「Works」(Worksはブール値0/1フィールド、「DayofWeek」は曜日を表す数値です)のサブテーブルがあります。リソースIDと曜日のデータを組み合わせることで、このデータに関連する有用なクエリを書くのがはるかに簡単になります。また、作業の変更を理解できるように、開始日や終了日などの他の項目あなたが今持っているものは柔軟性がなく、あなたが必要とする情報を簡単にとらえることはできません。 – ADyson
最初のテーブルから重要な情報、具体的にはリソースIDとWeekStartingまたはEnding dateが欠落しているようです。 – Greenspark
正しいテーブル構造を投稿してください – Amit