2016-09-06 2 views
1

The table with the data that I haveДобавить значение столбца и отображать результат добавленного в новой таблице

В приведенной выше таблице у меня есть столбцы: НомерНедели, weeklyHours, points_Rewarded.

Есть четыре сотрудника: а, б, в, г

У меня значение для week1, week2, week3, и так далее (я могу иметь данные для многих более недель и таких, как week4, week5, и т.д.)

Я хочу написать запрос таким образом, что после прохождения запроса я получаю в общей сложности из weeklyHours и points_Rewarded для каждого служащего в новой таблице. Вид таблицы, которую должен предоставить мне запрос, the desired table that I want after passing the query

Пожалуйста, помогите мне с запросом.

Заранее спасибо.

ответ

2

Вы можете использовать GROUP BY для достижения совокупных значений. В вашем случае вы ищете SUM.

Попробуйте

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

Большое спасибо lot.forgot говоря, у меня есть столбец too.What EMPLOYEE_ID, если я хочу, чтобы вставить столбец EMPLOYEE_ID в результате –

+0

@ShivamSharma, увидеть мои обновления – Shnugo

+0

спасибо за тонну. вы сэкономили много времени. –

0

Попробуйте с ниже запроса.

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

Это простой GROUP BY. Вы хотите сгруппировать сотрудников по имени, так что укажите employeeeename в инструкции GROUP BY. Затем просто выберите КАК вы хотите сгруппировать остальные столбцы. В этом случае, вы хотите SUM их:

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

Обратите внимание, что вы можете также использовать AVG или MIN или MAX вместо SUM в зависимости от того, что вы хотите найти. В предложении AS указано, что вы хотите вызвать в столбце определенный столбец.

Испытано здесь: http://sqlfiddle.com/#!9/2a96f

+0

большое спасибо ... –

Смежные вопросы