2017-06-04 53 views
0

我有一个查询,按天(分组) 总结项目销售额,但我现在需要在该查询中包括在同一查询 白天recibed总数量,但此字段是其他表查询总和其他表字段和分组

这是两个表的表示

Sales表名为 “Item_Sales” 命名为 “Items_Rec”

+------------+-------------+---------------+----------------+ 
| SaleItemID | SaleItemQty | SaleItemPrice | SaleItemDate | 
+------------+-------------+---------------+----------------+ 
|  51026 |  18.00 |   11.31 |  07/01/1016 | 
+------------+-------------+---------------+----------------+ 
|  14309 |  7.00 |   22.35 |  07/01/2016 | 
+------------+-------------+---------------+----------------+ 
|  51026 |  6.00 |   11.31 |  07/01/2016 | 
+------------+-------------+---------------+----------------+ 
|  51026 |  10.00 |   11.31 |  07/02/2016 | 
+------------+-------------+---------------+----------------+ 
|  14309 |  14.00 |   22.35 |  07/02/2016 | 
+------------+-------------+---------------+----------------+ 
|  14309 |  9.00 |   22.35 |  07/02/2016 | 
+------------+-------------+---------------+----------------+ 

Recibed项目表

+-----------+------------+--------------+---------------+ 
| RecItemID | RecItemQty | RecItemPrice | RecItemDate | 
+-----------+------------+--------------+---------------+ 
| 51026 |  10.00 |  11.31 | 07/01/1016 | 
+-----------+------------+--------------+---------------+ 
| 14309 |  5.00 |  22.35 | 07/01/2016 | 
+-----------+------------+--------------+---------------+ 
| 51026 |  5.00 |  11.31 | 07/01/2016 | 
+-----------+------------+--------------+---------------+ 
| 51026 |  10.00 |  11.31 | 07/02/2016 | 
+-----------+------------+--------------+---------------+ 
| 14309 |  5.00 |  22.35 | 07/02/2016 | 
+-----------+------------+--------------+---------------+ 
| 14309 |  5.00 |  22.35 | 07/02/2016 | 
+-----------+------------+--------------+---------------+ 

我有这个疑问,但我需要包括RecItemQty SUM从ITEMS_REC表

SELECT 
    S.SaleItemID, 
    Format(SUM(S.SaleItemQty), "###,##0.00")AS 'Quantity', 
    Format(SUM(S.SaleItemPrice), "###,##0.00")AS 'Amount', 
    S.SaleItemDate 
FROM Items_Sales 
GROUP BY S.SaleItemID,S.SaleItemDate 

这是结果,我需要

+------------+-------------+------------+--------------+----------------+ 
| SaleItemID | SaleItemQty | RecItemQty |SaleItemPrice | SaleItemDate | 
+------------+-------------+------------+--------------+----------------+ 
|  51026 |  24.00 |  15.00 |  11.31 |  07/01/1016 | 
+------------+-------------+------------+--------------+----------------+ 
|  14309 |  7.00 |  5.00 |  22.35 |  07/01/1016 | 
+------------+-------------+------------+--------------+----------------+ 
|  51026 |  10.00 |  10.00 |  11.31 |  07/02/1016 | 
+------------+-------------+------------+--------------+----------------+ 
|  14309 |  23.00 |  10.00 |  22.35 |  07/02/1016 | 
+------------+-------------+------------+--------------+----------------+ 

谢谢!

+0

什么是'Recibed'?两个表中有相同的SaleItemID和日期?构建两个聚合查询,然后在SaleItemID和两个日期字段 - 复合连接上连接另一个查询。为什么两张桌子?以示例数据为例,可以是1个表格。 – June7

回答

0

只要加入这两个聚集在项目IDItemDate。下面使用两个派生表,但在MS Access中,您可以将这两个聚合查询另存为单独的存储查询(即视图),并在另一个查询中将其加入。

SELECT subSales.SaleItemID, subSales.SumSaleItemQty, subRec.SumRecItemQty, 
     subSales.SumSaleItemPrice, subSales.SaleItemDate 
FROM 

    (SELECT 
     S.SaleItemID, 
     Format(SUM(S.SaleItemQty), "###,##0.00") AS SumSaleItemQty, 
     Format(SUM(S.SaleItemPrice), "###,##0.00") AS SumSaleItemPrice, 
     S.SaleItemDate 
    FROM Items_Sales S 
    GROUP BY S.SaleItemID, S.SaleItemDate) As subSales 

INNER JOIN 

    (SELECT 
     R.RecItemID, 
     Format(SUM(R.RecItemQty), "###,##0.00") AS SumRecItemQty, 
     Format(SUM(R.RecItemPrice), "###,##0.00") AS SumRecItemPrice, 
     R.RecItemDate 
    FROM Items_Rec R 
    GROUP BY R.RecItemID, R.RecItemDate) As subRec 

ON subSales.SaleItemID = subRec.RecItemID 
AND subSales.SaleItemDate = subRec.RecItemDate 

此外,考虑LEFT JOINRIGHT JOIN甚至两个(为FULL OUTER)UNION的情况下,项目的记录是在一个表中,而不是其他,你需要静像拍摄的所有相关行。

0

你需要加入两个表:

SELECT 
    S.SaleItemID, 
    Format(SUM(R.RecItemQty), "###,##0.00")AS 'Received' 
    Format(SUM(S.SaleItemQty), "###,##0.00")AS 'Quantity', 
    Format(SUM(S.SaleItemPrice), "###,##0.00")AS 'Amount', 
    S.SaleItemDate 
FROM Items_Sales S 
INNER JOIN Items_Rec R 
    ON S.SaleItemID = R.RecItemID 
    AND S.SalesItemDate = R.RecItemDate 
GROUP BY S.SaleItemID,S.SaleItemDate 
+0

警告:如果有多个匹配记录,则此单位级连接可能会重复求和。你想加入他们的聚合。另外,你不加入日期。 – Parfait