ソーステーブルでは、各行が特定のアクティビティの1日の時間を表します。 SQLを使用して、従業員、年、期間、および活動で異なる日付の行を期間の行にマージするにはどうすればよいですか?
ソーステーブルから選択:
SELECT [Employee]
,[Year]
,[Period]
,[Activity]
,[Day1]
,[Day2]
,[Day3]
,[Day4]
,[Day5]
,[Day6]
,[Day7]
FROM [HoursAccounting]
where Employee = '1234'
結果:
Employee Year Period Activity Day1 Day2 Day3 Day4 Day5 Day6 Day7
-------- ----------- ----------- ---------- ------- ------- ------- ------- ------- ------- -------
1234 2016 34 102002 7,5 0 0 0 0 0 0
1234 2016 34 102002 0 7,6 0 0 0 0 0
1234 2016 36 102002 0 7,5 0 0 0 0 0
1234 2016 36 102002 7,5 0 0 0 0 0 0
1234 2016 37 102002 0 4,5 0 0 0 0 0
1234 2016 37 104001 7,5 0 0 0 0 0 0
1234 2016 37 104001 0 0 0 4 0 0 0
1234 2016 37 104002 0 0 7,5 0 0 0 0
1234 2016 39 102002 0 0 7,5 0 0 0 0
1234 2016 39 102002 0 7,5 0 0 0 0 0
1234 2016 39 102002 0 0 0 7,5 0 0 0
1234 2016 39 102002 0 0 0 0 7,5 0 0
1234 2016 39 102002 7,5 0 0 0 0 0 0
私が欲しいのは次のような結果です:
Employee Year Period Activity Day1 Day2 Day3 Day4 Day5 Day6 Day7
-------- ----------- ----------- ---------- ------- ------- ------- ------- ------- ------- -------
1234 2016 34 102002 7,5 7,6 0 0 0 0 0
1234 2016 36 102002 7,5 7,5 0 0 0 0 0
1234 2016 37 102002 0 4,5 0 0 0 0 0
1234 2016 37 104001 7,5 0 0 4 0 0 0
1234 2016 37 104002 0 0 7,5 0 0 0 0
1234 2016 39 102002 7,5 7,5 7,5 7,5 7,5 0 0
1つの選択で実行できますか?
SELECT [Employee]
,[Year]
,[Period]
,[Activity]
,Sum([Day1]) as Day1
,Sum([Day2]) as Day2
,Sum([Day3]) as Day3
,Sum([Day4]) as Day4
,Sum([Day5]) as Day5
,Sum([Day6]) as Day6
,Sum([Day7]) as Day7
FROM [HoursAccounting]
where Employee = '1234'
group by Employee, [Year], Period, Activity;