2017-12-27 21 views
0

です。さまざまなテーブルから作業した合計日数を計算する必要があります。タイムシートテーブルとタイムシートラインテーブルがあります。 timesheetlineテーブルには、次のフィールドがあります。人は1日目に3時間を働いたと5日目に5時間を働いている場合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 ; 

はさて、総加工された日には、その週に2です。どのように私は、これらのフィールド

を使用して2つの日付間の総労働日数をうまくん
+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 
+0

ありがとう、それは働いた。しかし、私は名前と姓を表示したいので、それは私が;列は私が表示します –

+0

@ShahbazHussain - はい、 'SELECT WorkerId、name、lastname ...'と 'group by workerId、name、lastname'でそれらを追加します。 –

+0

今、もし私が今これらの2つの日付の間に働いていた労働時間数を調べるには –