2016-09-06 1 views
1

The table with the data that I haveAjouter des valeurs d'une colonne et afficher résultat ajouté dans le nouveau tableau

Dans le tableau ci-dessus, j'ai les colonnes: Semaine n °, WeeklyHours, points_Rewarded.

Il y a quatre employés: a, b, c, d

Je les valeurs semaine1, semaine2, Semaine3, et ainsi de suite (je peux avoir des données pendant de nombreuses semaines aussi telles que week4, Semaine5, etc)

Je veux écrire une requête telle que, après le passage de la requête que je reçois le total des WeeklyHours et points_Rewarded pour chaque employé dans une nouvelle table. Le type de table que la requête devrait me donner est ici the desired table that I want after passing the query

Aidez-moi s'il vous plaît avec la question.

Merci d'avance.

Répondre

2

Vous pouvez utiliser GROUP BY pour obtenir des valeurs agrégées. Dans votre cas, vous recherchez SUM.

Essayez cette

DECLARE @tbl TABLE(EmployeeID INT, EmployeeName VARCHAR(100),WeekNumber VARCHAR(100),WeeklyHours INT,pointsRewarded INT); 
INSERT INTO @tbl VALUES 
(1,'a','week1',10,20) 
,(2,'b','week1',1,20) 
,(3,'c','week1',20,20) 
,(4,'d','week1',30,30) 
,(1,'a','week2',11,10) 
,(2,'b','week2',44,10) 
,(3,'c','week2',5,10) 
,(4,'d','week2',6,40) 
,(1,'a','week3',7,10) 
,(2,'b','week3',88,10) 
,(3,'c','week3',9,10) 
,(4,'d','week3',0,10); 

SELECT tbl.EmployeeID 
     ,tbl.EmployeeName 
     ,SUM(tbl.WeeklyHours) AS Total_Weekly_Hours 
     ,SUM(pointsRewarded) AS Total_Points 
FROM @tbl AS tbl 
GROUP BY tbl.EmployeeID, tbl.EmployeeName 
+0

Merci de mentionner un lot.forgot, j'ai une too.What colonne employee_id si je veux insérer la colonne employee_id dans le résultat –

+0

@ShivamSharma, voir ma mise à jour grâce – Shnugo

+0

une tonne. vous avez sauvé beaucoup de mon temps .. –

0

Essayez la requête ci-dessous.

 SELECT EmployeeName 
      ,SUM (weeklyHours)Total_weekly_hours 
      ,SUM (pointsrewarded) TotalPoints 
     FROM YourTable 
    Group By EmployeeName 
0

Ceci est un simple GROUP BY. Vous souhaitez regrouper les employés par nom, spécifiez empleename dans l'instruction GROUP BY. Ensuite, sélectionnez simplement COMMENT vous voulez regrouper les autres colonnes. Dans ce cas, vous voulez les SUM:

SELECT employeename, 
SUM(weeklyhours) as total_weekly_hours, 
SUM(points_rewarded) as total_points 
GROUP BY employeename 

Notez que vous pouvez également utiliser AVG ou MIN ou MAX en place de SUM en fonction de ce que vous voulez trouver. La clause AS spécifie ce que vous voulez appeler une colonne particulière dans votre sortie.

Testé ici: http://sqlfiddle.com/#!9/2a96f

+0

merci beaucoup ... –