我有一个场景,我需要过滤掉那些少数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
答案 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)