TSQL计算总工作天数

时间:2017-12-27 10:02:15

标签: sql-server tsql

我必须计算出各种不同表格的总工作天数。我有一张时间表和时间表行表。时间表行表格包含以下字段:

Id; TimesheetId;    TimesheetLineCode;  WorkUnitId; EntryGroupId;   WorkerId;   
Day1_Standard_RateId;   Day1_Standard_Hours;    
Day2_Standard_RateId;   Day2_Standard_Hours ;
Day3_Standard_RateId;   Day3_Standard_Hours ;
Day4_Standard_RateId;   Day4_Standard_Hours ;
Day5_Standard_RateId;   Day5_Standard_Hours ;
Day6_Standard_RateId;   Day6_Standard_Hours ;
Day7_Standard_RateId;   Day7_Standard_Hours ;
ConcurrencyToken    ;

现在,如果一个人在第1天工作3小时并且在第5天工作5小时,则该工作日的总工作天数为2。如何使用这些字段计算两个日期之间的总工作日

1 个答案:

答案 0 :(得分:1)

你可以这样做:

SELECT 
  WorkerId,
  SUM(CASE WHEN Day1_Standard_Hours > 0 THEN 1 ELSE 0 END) +
  SUM(CASE WHEN Day2_Standard_Hours > 0 THEN 1 ELSE 0 END) +
  SUM(CASE WHEN Day3_Standard_Hours > 0 THEN 1 ELSE 0 END) +
  SUM(CASE WHEN Day4_Standard_Hours > 0 THEN 1 ELSE 0 END) +
  SUM(CASE WHEN Day5_Standard_Hours > 0 THEN 1 ELSE 0 END) +
  SUM(CASE WHEN Day6_Standard_Hours > 0 THEN 1 ELSE 0 END) +
  SUM(CASE WHEN Day7_Standard_Hours > 0 THEN 1 ELSE 0 END) TotalDays
FROM timesheetline
GROUP BY WorkerId