0

好吧,这些值不是每个说的空值,它们是VARCHAR(30)十进制形式。但是,某些记录在某些字段中具有“NA”。当SUM用于SUM. Mysql 将所有不可计算的字段视为 0。包含“NA”的字段中的 0 具有误导性。我正在做一个GROUP BY TABLE.ID.

编辑:

选择

和(

X >1 THEN 1 的情况

当 X<-1 时 2 否则 3

结尾

案子

当 Y >1 时 1

当 Y <-1 然后 2

其他 3

结尾)

作为“列 X+Y”;

FROM TableA GROUP BY TableA_ID;

有时 X 和/或 Y = 某些字段上的“NA”。如果 TableA_ID 上的 X 和 Y 都为 17,或者当其中一个为“NA”时,我得到 6。

编辑(引用我对 VARCHAR 的评论):

“我尝试将我的值存储为 DEC(5,2),但 Excel 中的一些数据在字段中有 NA。我确实将X DEC(5,2) 设置为 NULL 并尝试将 NA 插入其中,但一直出现错误(不能为空)。我也尝试将默认值设为“NA”,但仍然出现错误(不能为空)。我将添加一个示例查询作为编辑。”

4

2 回答 2

1

我得到了它。我在另一个 WHERE 子句中添加了使用

WHERE ..... AND(Colx 不为 NULL 或 Coly 不为 NULL 或 ......);

我将这些值切换回 DEC(3,1),如果字段值为 NULL,则将字段设为 NULLable,默认值为 null 。我必须了解如何使用 NULL。我在 Excel 中取出了“NA”并将这些字段值留空。

于 2013-07-01T15:17:05.963 回答
0

如果 foo1 为 null 或 NA 只需将其相加为零(加法中的中性值),否则将值相加。

select sum( case when foo1  is null or foo1 = 'NA' then 0 else foo1 end) as sum, foo2
from FooTable group by foo2

或者

select sum(foo1) from FooTable
where (foo2 <> 'NA' and foo2 is null) and (foo3 <> 'NA' or foo3 is null )
group by foo4
于 2013-06-28T20:16:00.547 回答