このような何か、あなたが持っているどんなに多くの期間も繰り返されます。
私はあなたがそうすると仮定しています:
- あなたの時間
SUM
(または)する必要がありますか?COUNT?
- ある種の
@period_start_date
パラメータを使用して、各期間を1日、2日、3日などでオフセットします。
テキストエディタで手作業で行うので、タイプミスはご容赦ください。または、単純なことがうまくいかない場合は、アイデアは明確/健全だと思います。
CREATE PROCEDURE GetHoursWorkedInPeriod @periodStartDate datetime = getdate() AS
SELECT
e.emp_fullname,
sum(t1.tc_hours) as 'Day1Hours',
min(t1.punchDate) as 'Day1Date'.
sum(t2.tc_hours) as 'Day2Hours',
min(t2.punchDate) as 'Day2Date',
sum(t3.tc_hours) as 'Day3Hours',
min(t3.punchDate) as 'Day3Date',
...and so on
FROM
WaspTime.dbo.vEmployeeInfo as e
inner join WaspTime.dbo.vTimeCards as t1
on e.emp_id = t1.tc_emp
AND t1.punchDate >= DATEADD (day , 0 , @periodStartDate )
AND t1.punchDate < DATEADD (day , 1 , @periodStartDate )
inner join WaspTime.dbo.vTimeCards as t2
on e.emp_id = t2.tc_emp
AND t2.punchDate >= DATEADD (day , 1 , @periodStartDate )
AND t2.punchDate < DATEADD (day , 2 , @periodStartDate )
inner join WaspTime.dbo.vTimeCards as t3
on e.emp_id = t3.tc_emp
AND t3.punchDate >= DATEADD (day , 2 , @periodStartDate )
AND t3.punchDate < DATEADD (day , 3 , @periodStartDate )
...and so on.
GROUP BY
e.emp_fullname
OPの要求に応じて、各期間を1日に制限するように編集されました。また、結果セットに時間の適用日が明示的に含まれています。