2015-10-16 115 views
2

我創建了一個oracle查詢,如下所示,查詢工作正常 ,但問題是,我想要一個更多的列,這是名稱的計數,其中類別應該是A和ID應該在1根據條件的列數

SELECT name, velocity, COUNT(*) AS count, category FROM section GROUP BY name, velocity 

enter image description here

誰能告訴我,這

+0

[Conditional Count on a field]可能重複(http://stackoverflow.com/questions/1288058/conditional-count-on-a-field) – C8H10N4O2

回答

8
SELECT name, velocity, COUNT(*) AS count, 
COUNT(CASE WHEN category = 'A' AND id = 1 THEN 1 END) 
FROM section 
GROUP BY name, velocity 

這應該工作。

如果記錄不符合條件,那麼它將返回一個NULL,並且count跳過NULL字段。

1
SELECT name, velocity, COUNT(*) AS count, category, 
     (select count(distinct name) from section where category = 'A' and id = 1) 
FROM section 
GROUP BY name, velocity 
2

事情是這樣的一些解決方案:

SELECT name, velocity, COUNT(*) AS count, 
SUM(CASE WHEN category = 'A' AND id = 1 THEN 1 ELSE 0 END) 
FROM section 
GROUP BY name, velocity 
+0

您忘記了ID條件 – Mihai

+0

@Mihai謝謝!固定 – Tatiana