2015-07-20 81 views
-2

我想作出这样的总结销售的每个产品ID的总数为一组几个月的查询(即五月 - 八月)查询总结销售总额为X个月指定的日期

我想:

+------------+-------------------------+-------+--------------+-----------------+ 
| PRODUCT_ID |   ITEM   | PRICE | GROSS_MARGIN | Sum Of QUANTITY | 
+------------+-------------------------+-------+--------------+-----------------+ 
| 100-10  | ALVE laptop table  | 89 | 56%   |   23323 | 
| 100-15  | FREDRIK desk   | 129 | 44%   |   9614 | 
| 100-20  | GALANT conference table | 369 | 32%   |   10272 | 
+------------+-------------------------+-------+--------------+-----------------+ 

但我无法建立查询要做到这一点,因为我是很新的接入(真我第一次用它玩弄周围)。

这就是我目前的查询吐出:

+------------+--------------------------+---------+--------------+--------------------+----------+ 
| PRODUCT_ID |   ITEM   | PRICE | GROSS_MARGIN | TRANSDATE By Month | QUANTITY | 
+------------+--------------------------+---------+--------------+--------------------+----------+ 
| 100-10  | ALVE laptop table  | $89.00 | 56.00%  | August 2011  |  9679 | 
| 100-10  | ALVE laptop table  | $89.00 | 56.00%  | July 2011   |  9436 | 
| 100-10  | ALVE laptop table  | $89.00 | 56.00%  | June 2011   |  3222 | 
| 100-10  | ALVE laptop table  | $89.00 | 56.00%  | May 2011   |  986 | 
| 100-15  | FREDRIK desk    | $129.00 | 44.00%  | August 2011  |  3150 | 
| 100-15  | FREDRIK desk    | $129.00 | 44.00%  | July 2011   |  2695 | 
| 100-15  | FREDRIK desk    | $129.00 | 44.00%  | June 2011   |  3769 | 
| 100-20  | GALANT conference table | $369.00 | 32.00%  | August 2011  |  3814 | 
| 100-20  | GALANT conference table | $369.00 | 32.00%  | July 2011   |  4977 | 
| 100-20  | GALANT conference table | $369.00 | 32.00%  | June 2011   |  225 | 
| 100-20  | GALANT conference table | $369.00 | 32.00%  | May 2011   |  1256 | 
+------------+--------------------------+---------+--------------+--------------------+----------+ 

从本质上讲,我想有一个行的总结该项目的这4个月的月均销量(5月,包括每天的这个月)。如有必要,请忽略其他栏(价格&保证金)。

任何帮助将不胜感激,我需要在周五之前完成这项任务! 已经玩了好几个小时了,但是每次我走近一步,我似乎都会破坏一些东西。 :'(

这里是我当前的SQL语法/代码(对不起,不知道正确的术语)

SELECT DISTINCTROW 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM, 
    PRODUCTS.PRICE, 
    PRODUCTS.GROSS_MARGIN, 
    Format$([SALES].[TRANSDATE],'mmmm yyyy') AS [TRANSDATE By Month], 
    Sum(SALES.QUANTITY) AS [Sum Of QUANTITY] 
FROM PRODUCTS INNER JOIN 
    SALES ON PRODUCTS.[PRODUCT_ID] = SALES.[PRODUCT_ID] 
GROUP BY 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM, 
    PRODUCTS.PRICE, 
    PRODUCTS.GROSS_MARGIN, 
    Format$([SALES].[TRANSDATE],'mmmm yyyy'), Year([SALES].[TRANSDATE])*12+DatePart('m',[SALES].[TRANSDATE])-1; 

这实际上目前显示为所有几个月和几年的所有数据(我有2年价值所有产品的数据)我只希望在一年的一年(2011年5月至8月)每个产品ID的总销售额请帮助!

+0

http://sqlfiddle.com/#!3/71d47 这里是两个表的示例数据的小提琴。 基于这些表格,我想要一个查询为每个ID带来销售额,并如上所述在2011年5月至8月的月份中进行总计。 任何帮助非常感谢..花了超过4天试图找出这个......需要新鲜的眼睛。 – user2700929

回答

0

由于这是Access,SQL Fiddle只能是一个开始

您需要正确引用日期表达式:

SELECT 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM,  
    Sum(SALES.QUANTITY) AS [Sum Of QUANTITY] 
FROM 
    PRODUCTS INNER JOIN 
    SALES ON PRODUCTS.[PRODUCT_ID] = SALES.[PRODUCT_ID] 
WHERE 
    [SALES].[TRANSDATE] BETWEEN #2015-05-01# AND #2015-08-31# 
GROUP BY 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM 

修正学习网站

我失踪,你的原始数据有日期2011年和2011年没有我特此发布更正SQL为您测试非常抱歉:

SELECT 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM,  
    Sum(SALES.QUANTITY) AS [Sum Of QUANTITY] 
FROM 
    PRODUCTS INNER JOIN 
    SALES ON PRODUCTS.[PRODUCT_ID] = SALES.[PRODUCT_ID] 
WHERE 
    [SALES].[TRANSDATE] BETWEEN #2011-05-01# AND #2011-08-31# 
GROUP BY 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM 

这将从您的Access数据库产生输出。但是,与SQL提琴手一起使用,它将会有所不同:

SELECT 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM,  
    Sum(SALES.QUANTITY) AS [Sum Of QUANTITY] 
FROM 
    PRODUCTS INNER JOIN 
    SALES ON PRODUCTS.[PRODUCT_ID] = SALES.[PRODUCT_ID] 
WHERE 
    [SALES].[TRANSDATE] BETWEEN '2011-05-01' AND '2011-08-31' 
GROUP BY 
    PRODUCTS.PRODUCT_ID, 
    PRODUCTS.ITEM 

对不便。

+0

我已经试过这个,并且没有结果的预期列没有返回结果。我不确定查询在哪里被窃听,但这是我认为是正确的,它什么都没有返回。 我会在今天晚些时候将两张表的部分上传到小提琴,也许这会帮助别人找出问题。 – user2700929

+0

sqlfiddle.com/#!3/71d47这里是两个表的样本数据的小提琴。基于这些表格,我想要一个查询,为每个ID带来销售额,并在2011年5月至8月的月份中进行汇总,如上所述。任何帮助非常感谢..花了超过4天试图找出这个......需要新鲜的眼睛。 - – user2700929

+0

这样的查询将不会返回任何记录......因为您只有2010-01和2011-03之间的数据。 – Gustav