Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算联接表中的第一个表_Sql_Ms Access_Oledb - Fatal编程技术网

Sql 计算联接表中的第一个表

Sql 计算联接表中的第一个表,sql,ms-access,oledb,Sql,Ms Access,Oledb,我的sql查询有问题。我有两张桌子(a.销售,b.销售详情)。对于行: Sales SalesDetail ------ ----------- SaleNo : MakeDate IDSalesDetail: SaleNo : ItemCode : ItemPrice : ItemQty --------:--------- -------------:--------:----------:---------

我的sql查询有问题。我有两张桌子(a.销售,b.销售详情)。对于行:

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   :
因为
计数(*)
会影响SalesDetail表

如果有人能解决我的问题,我将不胜感激


谢谢,祝你今天愉快

尝试在计数时使用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')

尝试在计数时使用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')

我自己刚刚找到了我自己答案的公式,如果你想知道怎么做,请检查一下

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')

我自己刚刚找到了我自己答案的公式,如果你想知道怎么做,请检查一下

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')
查询表达式“COUNT(DISTINCT SalesDetail.NoSale)”中出现语法错误(缺少运算符)。我在查询表达式“COUNT(DISTINCT SalesDetail.NoSale)”中使用Access 2007 FYISyntax错误(缺少运算符)。我正在使用Access 2007仅供参考