2013-07-18 44 views
2

我想我只是缺乏關鍵詞進行搜索,但是這是燃燒在我的腦海:從db中選擇sum(a),sum(b,其中c = 1)在SELECT語句SQL條件

我怎麼可以在選擇語句添加條件的總和,功能類似

從db中選擇sum(a),sum(b where c = 1);?

這意味着,我希望看到列b之和列b的總和,但只有在B列中的記錄,其中clomumn c的值爲1

海蒂的輸出只是說「靠近WHERE的糟糕的syntac」。可能有其他方法嗎?

在此先感謝,並從柏林最好的問候,約阿希姆當你需要大量聚集的同一組數據的

+0

什麼是您的數據庫引擎? –

+0

mssql - 喬的語法剛剛工作 – josewe

回答

0
select sum(case when c=1 then b else 0 end) 

這個技術是很有用的 - 你可以查詢整個表,而不應用where過濾器,並有一堆這些給你一個特定的過濾器彙總數據。

它也是有用的,當你需要大量的基於過濾器計數 - 你可以做的1或0和:

select sum(case when {somecondition} then 1 else 0 end) 
+0

我認爲他仍然希望sum(a)。 – Gratzy

+0

完美,謝謝 – josewe

+0

@Gratzy是的,你可以有多少列,你想在查詢 - 這只是顯示適用於該問題的一個特定的列。 –

2

確切的語法可能因數據庫引擎不同,但是這將是沿

SELECT 
    sum(a), 
    sum(CASE WHEN c = 1 THEN b ELSE 0 END) 
FROM 
    db