2016-12-15 28 views
1

私は開始時刻と終了時刻が'11 -01-2016 'と'11 -30-2016'の間の日付を計算するテーブル[Mst_Daily_Report_Pds]を持っています。出力がグラフに表示されます。日曜日を除くSQLの開始時間と終了時間を計算する月間報告

例:

8.5hrs * 7days = 59.5hrs, 
8.5hrs * 6days = 51hrs 

そう割合が間違ったデータでは85%です。

私の問題は、日曜の値を除外する必要はない日曜日も含まれていますか?

select Name,Actual_Hours,round((Actual_Hours/((DATEDIFF(DAY,'11-01-2016' ,'11-30-2016')+1)*8.5))*100,0) as percentage 
from (select Name , SUM(actual_Hours) Actual_Hours 
from (select Name,ACTUAL_HOURS=sum(DATEPART(hh,[Time_Taken_in_Min]))+sum(DATEPART(MINUTE,[Time_Taken_in_Min])) /60 
FROM [HR_Admin].[dbo].[Mst_Daily_Report_Pds] where date between '11-01-2016' and '11-30-2016' 
    GROUP BY Name)o group by Name )a order by Actual_Hours desc 

親切に私はすべての割合以上で日曜日の値を除外するのに役立つ:

親切に以下のコードを確認してください。

+0

サンプルデータと予想される結果を追加できますか? –

+0

また、祝祭日を除外し、勤務時間の短い日(土曜日?)に対応する必要があるでしょう。 – cha

答えて

0

#tempTableを作成して、日曜日を除いて'11 -01-2016 'と'11 -30-2016'の間の日付を@@ DATEFIRSTで保存する必要があります。

SELECT * 
FROM tempTable 
WHERE ((DATEPART(dw, Date) + @@DATEFIRST) % 7) NOT IN (1) 

日曜日に設定あなたのSQLデータベースは、週の最初の日である場合:@@ DATEFIRSTは、だから、一時テーブルがされる1から7までの数週の最初の曜日を設定するために使用されます。

関連する問題