我有表格[Mst_Daily_Report_Pds]
我有开始时间和结束时间,它计算的日期是在11-01-2016'和' 11-30-2016'输出将显示在图表中。
前:
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)
您应该使用@@ DATEFIRST创建#tempTable,以便将日期存储在'11 -01-2016'和'11 -30-2016'之间,排除星期日。 @@ DATEFIRST用于将一周的第一天设置为1到7之间的数字。因此临时表将是:
SELECT *
FROM tempTable
WHERE ((DATEPART(dw, Date) + @@DATEFIRST) % 7) NOT IN (1)
如果您的SQL数据库设置为星期日是一周的第一天。