2015-02-06 31 views
0

我有一組數據,其中有一個單行的多個屬性。將多行分組爲一行

例如,每個員工可以參加多個活動,每個活動都有一個分數。當我從數據庫中查詢時,EmployeeID將在所有行重複這樣的:

enter image description here

我想是做排序的group by上的數據,使得每行是一個員工記錄其活性和評分像這樣:

enter image description here

我試圖通過這樣做1組:

select Employee.EmployeeID, Games.Activity, Games.Score from Employee left join Games on Employee.GameID = Games.GameID 
group by Employee.EmployeeID; 

但是這不起作用。我應該怎麼做,而不使用select子句中的聚合函數呢?

+0

你的意思是僱員ID字段應該是這些空行?我在這裏看不到任何分組。 – 2015-02-06 09:25:17

+0

這是一個格式問題,而不是它的外觀數據問題。您應該考慮在應用程序代碼中執行此操作。 – 2015-02-06 09:25:50

+0

@JamesZ我的意思是它將被分組。所以黑色的水平線代表一行。忽略電子表格產生的模糊線條。 – Carven 2015-02-07 14:12:20

回答

0

1.用戶窗口功能Row_number()與分區由EmployeeID

2.然後簡單地使用Case when then獲取第1行作爲僱員

select case when NewTab.RN =1 then NewTab.EmployeeID else null,NewTab.Activity, NewTab.Score 
from (
select ROW_NUMBER() OVER(partition BY Employee.EmployeeID ORDER BY Employee.EmployeeID)RN,* from (
select Employee.EmployeeID, Games.Activity, Games.Score from Employee 
left join Games on Employee.GameID = Games.GameID 
group by Employee.EmployeeID)D 
)NewTab 
+0

我不太明白第一步「用EmployeeID分區的用戶窗口函數Row_number()」。用戶窗口功能是什麼? – Carven 2015-02-07 14:14:29

+0

@Carven https://www.simple-talk.com/sql/learn-sql-server/window-functions-in-sql-server/ – 2015-02-07 14:59:46