【发布时间】:2019-07-23 19:35:39
【问题描述】:
我在我的 WPF 应用程序中使用 SQLite 的 .NET 数据连接器运行查询,与在 SQLite 的 DB Browser 中运行相同的精确查询相比,它显示了不同的结果。 DB Browser 的结果是正确的。基本上小数点在 WPF 应用程序中会四舍五入。
SQL 查询:
SELECT IFNULL(SUM(qty), 0) AS qty, IFNULL(SUM(amount), 0) AS amount, IFNULL(SUM(fat*qty), 0) AS avgfat, IFNULL(SUM(snf*qty), 0) AS avgsnf, IFNULL(SUM(pd1amount+pd2amount+pd3amount), 0) AS pd, IFNULL(COUNT(shift+Date), 0) AS shiftcount, milktype, ledgerid, ledgeralias, ledgername
FROM vouchercollections
WHERE ledgeralias>=1 AND ledgeralias<=100 AND membertype<>'C'
AND date>='2019-07-25 00:00:00' AND date<='2019-07-25 23:59:59'
GROUP BY milktype, ledgerid, ledgeralias, ledgername
ORDER BY ledgeralias, milktype desc
DataTable 中的数据可视化工具中的结果。在这个阶段没有发生手动数据操作,这些是直接从查询到 DataTable 的结果。
来自 SQLite 数据库浏览器的结果
如果您查看第 1 行。 2 和 3,DataTable 中的数量为 6 和 12,DB Browser for SQLite 中的数量为 5.5 和 12.5。
可能出了什么问题?
2019-07-25 更新:看来如果查询的第一个结果是小数,则整个返回的表都是正确的。但是,如果第一个结果是整数,则整个结果集都是整数。
【问题讨论】:
-
数据表中qty列的类型是什么?
-
数字。虽然 SQLite 似乎不太关心数据类型。例如,您可以将文本保存在整数字段中!