2016-09-06 4 views
1

The table with the data that I haveWerte einer Spalte hinzufügen und in neuer Tabelle

In der obigen Tabelle habe ich die Spalten hinzugefügt Ergebnis anzeigen: Wochennummer, weeklyHours, points_Rewarded.

Es gibt vier Mitarbeiter: a, b, c, d

Ich habe die Werte für week1, week2, week3, und so weiter (ich kann auch für viele weitere Wochen Daten wie week4, week5, etc)

ich möchte eine Abfrage so schreiben, dass die Abfrage ich die Summe der weeklyHours erhalten und points_Rewarded für jeder Mitarbeiter in einer neuen Tabelle nach dem Passieren. Die Art der Tabelle, die die Abfrage mir geben sollte, ist hier the desired table that I want after passing the query

Bitte helfen Sie mir bei der Abfrage.

Vielen Dank im Voraus.

Antwort

2

Sie können GROUP BY verwenden, um Aggregatwerte zu erzielen. In Ihrem Fall suchen Sie nach SUM.

Versuchen Sie, diese

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

Dank lot.forgot zu erwähnen, ich habe eine employee_id Spalte too.What, wenn ich die employee_id Spalte im Ergebnis –

+0

@ShivamSharma einfügen möchten, sehen meine Update – Shnugo

+0

Dank einer Tonne. Sie haben viel Zeit gespart .. –

0

mit der folgenden Abfrage Versuchen.

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

Dies ist eine einfache GROUP BY. Sie möchten die Mitarbeiter nach Namen gruppieren, so geben Sie in der Anweisung GROUP BY Employeename an. Wählen Sie dann WIE möchten Sie die anderen Spalten gruppieren. In diesem Fall möchten Sie sie SUM:

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

Beachten Sie, dass Sie auch AVG oder MIN oder MAX anstelle von SUM je nachdem, was Sie suchen möchten nutzen könnten. Die AS-Klausel gibt an, wie Sie eine bestimmte Spalte in Ihrer Ausgabe aufrufen möchten.

hier getestet: http://sqlfiddle.com/#!9/2a96f

+0

vielen Dank ... –

Verwandte Themen