2013-11-20 97 views
0

表中的特定數據列正在用於對結果集進行分組。是否可以向GROUP BY添加值而不將它們包含在原始數據中,以強制顯示不存在的值的分組。SQL將值添加到GROUP BY中的現有結果集

Here's my fiddle

例如表學生包含一個名爲KS2列,這有以下值:

2a 
3b 
2a 
4c 
3b 

通過計數一組這樣做:

2a 2 
3b 2 
4c 1 

但我想強制它在結果集中包含4b的值:

2a 2 
3b 2 
4c 1 
4b 0 

回答

2

這是一個不尋常的請求,但您可以應用union技巧。

http://sqlfiddle.com/#!3/92fa4/3

SELECT s.ks2,count(1) 
FROM student s 
GROUP BY s.ks2 
union 
select '4b',0 
from student s 
+0

編輯:你好感謝。問題是如果我說添加'4c',0給聯盟,它會顯示4c的兩個分組。 4c中的一個,0和4c中的一個,2. – Matt

+0

@Matt如果您希望將添加了聯合的新條目進行分組,則無法在組中包含0條目,因爲它始終計算整數值1。 –

0
With s as (SELECT s.ks2 ad 'd' 
FROM student s 
union all 
select '4b' from student s) 
Select d,count(d) 
From s 
Group by d