2014-01-22 71 views
0

輸出我目前的查詢是這樣的:SQL查詢一些行結合

item number 
car  5 
bus  4 
bicycle 7 
kaikias 10 

,但我需要GROUP BY無論是機動車還是沒有該項目。但是這些信息不在數據庫中。我應該明確地說,汽車在查詢中是一輛汽車。預期的輸出是:

item number 
motor 9 
others 17 

如何將行按其不屬於數據庫的某些屬性組合?

感謝

回答

2

的正確方法是創建一個新的表信息,按類別連接表和組。

否則,你可以在in和case中做類似的事情,但它不能很好地擴展和哈希。

像這樣:

select 
    case when item in ('motor1', 'motor2', '...') then 'motors' else 'others' end item, 
    count(*) number 
from 
    table 
group by 
    case when item in ('motor1', 'motor2', '...') then 'motors' else 'others' end 
2

只能查詢和您在數據庫中有信息組項目。數據庫本身不可能知道,汽車有電動機或自行車沒有電動機。

如果可能的話,我會建議您添加一個新的列保存此類信息。

編輯:

如果你只是想表明對已知值,你可以試試這樣:

SELECT CASE WHEN (item = 'car' OR item = 'bus') THEN 'motor' ELSE 'others' END as item, ... 
FROM yourTable 
... 

第一個參數是你的條件,第二個參數你的true值,第三個參數值爲false

+0

但我可以在查詢中指出汽車和公交車是汽車嗎? – javatar

+0

請參閱我的編輯 –

+0

它的作品,謝謝 – javatar