2017-10-09 15 views
2

私たちは、リソースとその作業日を含むテーブルを持っています。たとえば、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) 

これは私に正しい金額を与えます平日の平日の

+0

であなたのカウントを行うことができたら。 「Resource ID」、「DayOfWeek」、「Works」(Worksはブール値0/1フィールド、「DayofWeek」は曜日を表す数値です)のサブテーブルがあります。リソースIDと曜日のデータを組み合わせることで、このデータに関連する有用なクエリを書くのがはるかに簡単になります。また、作業の変更を理解できるように、開始日や終了日などの他の項目あなたが今持っているものは柔軟性がなく、あなたが必要とする情報を簡単にとらえることはできません。 – ADyson

+0

最初のテーブルから重要な情報、具体的にはリソースIDとWeekStartingまたはEnding dateが欠落しているようです。 – Greenspark

+0

正しいテーブル構造を投稿してください – Amit

答えて

1

あなたの月に何回毎日何が起こっているかを調べる必要があります。
次のクエリはあなたに役立ちます。

declare @from datetime= '2017/12/01' 
declare @to datetime = '2018/01/01' 

select 
datediff(day, -7, @to)/7-datediff(day, -6, @from)/7 AS MON, 
datediff(day, -6, @to)/7-datediff(day, -5, @from)/7 AS TUE, 
datediff(day, -5, @to)/7-datediff(day, -4, @from)/7 AS WED, 
datediff(day, -4, @to)/7-datediff(day, -3, @from)/7 AS THU, 
datediff(day, -3, @to)/7-datediff(day, -2, @from)/7 AS FRI, 
datediff(day, -2, @to)/7-datediff(day, -1, @from)/7 AS SAT, 
datediff(day, -1, @to)/7-datediff(day, 0, @from)/7 AS SUN 

あなたは、これは正規化して行うことができ、あなたのテーブル

+0

ありがとうございました。私はおそらく、仕事の日数を数えるために他のデータに対してこれを使用することができます – Timmo

+0

それは確かにアイデアですが、私はあなたが今仕事を完了することを確信しています – GuidoG

+0

それは働いている。私は月の日数を取得するためにこれを使用し、その日にリソースが動作する場合はカウンタに追加されました。 – Timmo

関連する問題