查询不会显示小数值

时间:2011-06-19 17:40:09

标签: c# ms-access decimal sales

我有一个Access查询,该查询应该为一组项目提取一个月内购买的数量。我的联接设置为选择Analysis中的所有项目以及与分析匹配的产品中的项目。

    SELECT AnalysisItems.Pmid, AnalysisItems.ProductName, Sum(Transactions.TransactionQty) 
    AS SumOfTransactionQty, Transactions.StoreAccount
    FROM AnalysisItems INNER JOIN Transactions ON AnalysisItems.Pmid = Transactions.Pmid
    WHERE (((Transactions.TransactionDate) Between #4/1/2011# And #4/30/2011#) 
    AND StoreAccount = 964290)
    GROUP BY AnalysisItems.Pmid, AnalysisItems.ProductName, Transactions.StoreAccount
    ORDER BY AnalysisItems.ProductName;

我希望看到所有78个分析项目,无论它们是否具有数量值。这仅返回具有数量的项目。它也不返回负值或0到1之间的值......即使我知道那里有一些小数值,它也不会显示0.50。一切都设置为标准十进制,比例2

我已尝试更改为一般数字并完全摆脱格式,但这也无效。

所以我的问题是..我可以尝试在查询中查看小数值,如何查看所有项目?

2 个答案:

答案 0 :(得分:1)

您的部分查询为:

FROM AnalysisItems INNER JOIN Transactions ON AnalysisItems.Pmid = Transactions.Pmid
WHERE (((Transactions.TransactionDate) Between #4/1/2011# And #4/30/2011#) 

您指定的内部联接不会提供您要求的结果 - 理想情况下,您希望将左联接用于您的目的。取代

FROM AnalysisItems INNER JOIN Transactions

FROM AnalysisItems LEFT JOIN Transactions

我认为应该可以正常使用

答案 1 :(得分:0)

“我想查看所有78个分析项目,无论它们是否具有数量值。”

如果这意味着您希望结果集中包含AnalysisItems行,即使这些项在4月和StoreAccount 964290的事务中没有任何匹配项,当您将这些条件放在WHERE子句中时也不会包括它们...您将只获得与WHERE子句条件匹配的行。

我认为您需要为事务使用子查询并将WHERE子句移动到子查询中。 LEFT JOIN AnalysisItems到子查询。

SELECT
    a.Pmid,
    a.ProductName,
    Sum(t.TransactionQty) AS SumOfTransactionQty,
    t.StoreAccount
FROM
    AnalysisItems AS a
    LEFT JOIN [
        SELECT
            Pmid,
            TransactionQty,
            StoreAccount
        FROM Transactions
        WHERE
            (TransactionDate Between #4/1/2011# And #4/30/2011#) 
            AND StoreAccount = 964290
        ]. AS t
        ON a.Pmid = t.Pmid
GROUP BY
    a.Pmid, 
    a.ProductName,
    t.StoreAccount
ORDER BY
    a.ProductName;