我们如何在sum

时间:2018-03-20 07:07:02

标签: oracle

我有一个场景,我需要过滤掉那些少数NUMBER列为零的记录。

假设记录1包含:c1_amount = 5,c2_amount = -2,c3_amount = -3,其他列有零。 这里,下面的代码失败了,因为它会过滤掉我不想要的记录,因为3列的值非零,但总和后得零。

Select * from table where
( C1_amount+
  C2_amount+
  .
  .
  .
  C50_amount) <>0;

我对表现并不关心。这就是为什么我既不想在所有50列上使用abs()也不检查每列&lt;&gt; 0

1 个答案:

答案 0 :(得分:1)

尝试选择

SELECT * FROM Table WHERE 
  decode(c1_amount,0,0,1)+decode(c2_amount,0,0,1)+..
      ..+decode(c50_amount,0,0,1)>0

或使用ALL

SELECT * FROM Table WHERE
0!=ANY(c1_amount,...,c50_amount)