web-dev-qa-db-ja.com

SQLで複数の行を1つの行にマージする

ソーステーブルでは、各行が特定のアクティビティの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つの選択で実行できますか?

3
René
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;
5
McNets