2013-04-04 42 views
1

你好,我是新來的PL SQL,我試圖做這樣的查詢:PL SQL,請選擇只有

SELECT column1, sum (column2) 
FROM table1 
WHERE sum (column2) <> 0 
GROUP BY column1 

基本上我想要做的是什麼,只選擇那些行的地方sum(column2)按列1分組是<> 0.

此查詢爲我提供了一個ORA-00934錯誤,因爲在WHERE子句中沒有指定總和操作必須按column1分組(或至少我認爲這是問題)。

我喜歡嘗試不同的解決方案:

SELECT CASE WHEN SUM(column2) <> 0 then (SUM(column2), column1) END 
... 

但PL-SQL不喜歡它。

什麼工作是:

SELECT column1, case when SUM(column2) <> 0 then SUM(column2) END 
... 

但在這種情況下,我沒有正是我想要的,因爲其結果就像是從 你的SELECT column1,SUM(列2)的一個pseudotable ... 除了我看到SUM(column2)= 0的白色字段而我不想看到整行的事實。

任何人都可以幫助我嗎?

謝謝

回答

1

你只需把你的WHERE條款列入HAVING條款。

SELECT column1, sum (column2) 
FROM table1 
GROUP BY column1 
HAVING sum (column2) <> 0 

HAVING條款GROUP BY後得到評估得到了應用。

+0

權!很容易!正如我所說,我是新來的sql ...非常感謝你! – user2211236 2013-04-04 10:00:12

0

使用HAVING子句:

SELECT column1, sum (column2) 
FROM table1 
GROUP BY column1 
HAVING sum (column2) <> 0 

Oracle的PL/SQL HAVING子句用於過濾或限制由GROUP_BY條款所形成的基團。

Source

+0

那容易?!萬分感謝!正如我所說我是新來的SQL,並不知道有關條款。 – user2211236 2013-04-04 10:00:48