2012-04-03 44 views
1

我有一個包含三列用戶的表。將用戶和值列表彙總到一個表中,其中包含用戶列表和計數值

Username Accepted Rejected 

User 1  1   NULL 
User 1  1   NULL 
User 1  NULL   1 
User 2  1   1 
User 3  1   NULL 
User 3  1   NULL 
User 2  NULL   1 
User 3  NULL   NULL 
User 2  NULL   NULL 

我想顯示所有用戶提供接受計數/拒絕列像這樣的列表:

Username Accepted Rejected 
User 1  2   1 
User 2  1   2 
User 3  2   NULL 

什麼是做到這一點的最好方法是什麼?

+0

你嘗試過什麼到目前爲止?您是否查看了COUNT()和SUM()的文檔? – Pondlife 2012-04-03 09:10:06

+0

我試着用CASE和GROUP BY,但還沒有。 – AFD 2012-04-03 09:11:19

回答

2

如果接受與拒絕可以包含1,0和空只使用金額,因爲如果提供的所有值都爲空總和將返回null:

select UserName, 
     sum(Accepted) Accepted, 
     sum(Rejected) Rejected 
    from ATable 
group by UserName 

伯爵將在用戶3的拒絕列返回零。

+0

Nikola,你的解決方案看起來類似於http://stackoverflow.com/questions/2723157/how-can-i-turn-a-bunch-of-rows-into-aggregated-columns-without-using-pivot-in-平方,我正在嘗試。它看起來會讓我在那裏。計數可能會更好,因爲只有在「已接受」和「已拒絕」均不爲0值的情況下,纔會在SSRS報告tablix中顯示行。 – AFD 2012-04-03 09:17:17

1

SELECT u.username, CASE WHEN COUNT(u.accepted)= 0 THEN NULL ELSE COUNT(u.accepted) END AS接受, CASE WHEN COUNT(u.rejected)= 0 THEN NULL ELSE COUNT (u.rejected) END被否決 FROM USR1ü

GROUP BY u.username