pl sql,make select only if

时间:2013-04-04 09:52:51

标签: sql select if-statement

您好我是pl sql的新手,我正在尝试进行这样的查询:

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

基本上我想要做的是只选择那些按column1分组的sum(column2)为&lt;&gt;的行。 0

这个查询给了我一个ORA-00934错误,这是有意义的,因为在WHERE子句中没有指定sum操作必须按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(column2)...... 除了我看到SUM(column2)= 0的白色字段,而我不想看到整行。

有人能帮助我吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您只需将WHERE子句放入HAVING子句。

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

HAVING子句在应用GROUP BY后进行评估。

答案 1 :(得分:0)

使用HAVING子句:

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

Oracle PL / SQL HAVING子句用于过滤或限制GROUP_BY子句形成的组。

Source