SQL : 错误的返回总数
SQL : wrong total returned
我正在做一个 SQL 项目,我有一个存储过程,其中我 return 每个客户在特定时间段内的总发票。我编写了一个存储过程,其中 returns 是每个客户的总金额,但总结果略高于实际金额。
- 客户1总计:23(单独查询找到他)
- 客户 1:共 25 个(使用存储过程)
这是我的存储过程,我有下表。谢谢你的时间。
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?
我正在做一个 SQL 项目,我有一个存储过程,其中我 return 每个客户在特定时间段内的总发票。我编写了一个存储过程,其中 returns 是每个客户的总金额,但总结果略高于实际金额。
- 客户1总计:23(单独查询找到他)
- 客户 1:共 25 个(使用存储过程)
这是我的存储过程,我有下表。谢谢你的时间。
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?