旧的dbf已经成功地连接到Excel(2010)。以下SQL查询(通过Microsoft Query)按预期工作,只给出一个结果。
Microsoft Query(Excel 2010)代码
SELECT c.NDELNUM AS deliverynote, SUM(c.NQTY*a.CPREDEF2) AS Total
FROM DelCusL AS c, Article AS a
WHERE c.CREF = a.CREF AND ((c.NDELNUM=?))
GROUP BY c.NDELNUM
我对获取单值感兴趣,但以下返回NULL:
SELECT c.NDELNUM AS deliverynote, SUM(c.NQTY*(a.CPREDEF2+c.CPROP2)) AS Total
FROM DelCusL AS c, Article AS a
WHERE c.CREF = a.CREF AND ((c.NDELNUM=?))
GROUP BY c.NDELNUM
我想这不起作用,因为在a.CPREDEF2或c.CPROP2中遇到空值。当遇到空值时,我希望它被视为0.我尝试在Microsoft Query中提供的值函数没有多大用处。
有关将EMPTY值转换为0以便操作成功的想法吗?
NQTY是一个数字,总是非空的。 CPREDEF2被视为VARCHAR并且可以是EMPTY:当EMPTY时,它似乎被视为来自其他测试的NULL; CPROP2是CPREDEF2的替代值,也可以是EMPTY,如果填充它可以理解为数字(如CPREDEF2)。 CPREDEF和CPROP2都被视为VARCHAR而不是数值,但是当它们自己被正确地相乘并聚合为数字时。 (当我尝试在聚合函数之前将它们一起添加时,它失败了。)
答案 0 :(得分:0)
在添加值之前尝试CAST
:
... * (CAST(a.CPREDEF2 AS DECIMAL(10,5))+CAST(c.CPROP2 AS DECIMAL(10,5))) ...