您好我是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的白色字段,而我不想看到整行。
有人能帮助我吗?
谢谢
答案 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子句形成的组。