我的SQL查询有问题。我有2个表(a。销售,b。SalesDetail)。使用行:
Sales SalesDetail
------ -----------
SaleNo : MakeDate IDSalesDetail: SaleNo : ItemCode : ItemPrice : ItemQty
--------:--------- -------------:--------:----------:-----------:--------:
1 :12/18/2015 1 : 1 : 001 : 100 : 5
2 :12/28/2015 2 : 2 : 001 : 100 : 10
3 :01/08/2016 3 : 3 : 001 : 100 : 20
4 : 2 : 002 : 50 : 10
5 : 1 : 002 : 50 : 5
我需要提供
等结果的查询TotalReceipt : Year : Amount :
-------------:-------:--------:
2 : 2015 : 2250 :
1 : 2016 : 2000 :
我使用了这个查询
SELECT COUNT(Sales.SaleNo) AS TotalReceipt,
FORMAT(Sales.MakeDate, 'yyyy') AS [Year],
SUM(SalesDetail.ItemQty * SalesDetail.ItemPrice) AS Amount
FROM (Sales INNER JOIN SalesDetail ON Sales.SaleNo = SalesDetail.SaleNo)
GROUP BY FORMAT(Sales.MakeDate, 'yyyy')
但它给了我这个而不是
TotalReceipt : Year : Amount :
-------------:-------:--------:
4 : 2015 : 2250 :
1 : 2016 : 2000 :
由于Count(*)
影响SalesDetail表。
如果有人能解决我的问题,我会感激不尽
谢谢你,祝你有愉快的一天!
答案 0 :(得分:0)
尝试使用distinct来计算如下:
SELECT COUNT(DISTINCT SalesDetail.NoSale) AS TotalReceipt,
FORMAT(Sales.MakeDate, 'yyyy') AS [Year],
SUM(SalesDetail.ItemQty * SalesDetail.ItemPrice) AS Amount
FROM (Sales INNER JOIN SalesDetail ON Sales.SaleNo = SalesDetail.SaleNo)
GROUP BY FORMAT(Sales.MakeDate, 'yyyy')
答案 1 :(得分:0)
我自己找到了自己答案的公式,如果你想知道如何检查这个
SELECT COUNT(*) AS TotalReceipt, Format(MakeDate, 'yyyy') AS [Year], SUM(Total) AS Amount
FROM (
SELECT SaleNo, SUM(ItemQty * ItemPrice) AS Total
FROM SalesDetail
GROUP BY SaleNo) DetailSum
INNER JOIN Sales ON Sales.SaleNo = DetailSum.SaleNo
GROUP BY Format(MakeDate, 'yyyy')