SQL : 错误的返回总数

SQL : wrong total returned

我正在做一个 SQL 项目,我有一个存储过程,其中我 return 每个客户在特定时间段内的总发票。我编写了一个存储过程,其中 returns 是每个客户的总金额,但总结果略高于实际金额。

这是我的存储过程,我有下表。谢谢你的时间。

CREATE PROCEDURE QUERY4 
    @p_StartDate DATE, @p_EndDate DATE
AS
BEGIN
    SELECT ct.*, SUM(iv.Total) AS Total
    FROM Customer AS ct, Invoice AS iv
    WHERE ct.CustomerId = iv.CustomerId 
      AND iv.InvoiceDate BETWEEN @p_StartDate AND @p_EndDate
    GROUP BY ct.CustomerId, ct.FirstName, ct.LastName, ct.Company, ct.Country, ct.State, ct.City, 
            ct.Address, ct.PostalCode, ct.Phone, ct.Fax, ct.Email, ct.SupportRepId
    ORDER BY Total DESC
 END;

您可以先在子查询中对发票进行分组。
然后 INNER JOIN 给客户。

    SELECT ct.*, inv.Total
    FROM 
    (
       SELECT i.CustomerId, SUM(i.Total) AS Total
       FROM Invoice i
       WHERE i.InvoiceDate >= @p_StartDate
         AND i.InvoiceDate <= @p_EndDate
       GROUP BY i.CustomerId
    ) inv
    INNER JOIN Customer AS ct
      ON ct.CustomerId = inv.CustomerId 
    ORDER BY inv.Total DESC

但这应该会给出与之前相同的结果。
因此,也许您可​​以分享您使用的找到 23 的查询。
另外,InvoiceDate 是 DATE 类型还是 DATETIME?