我试图构造一个SQL语句的MS Access抓住从我们的数据库由产品的所有销售从未被出售给特定客户2013年1月1日之前。我相信以下SQL语句会这样做:获取日期范围之间的所有行与分日期
SELECT
Sales.CustomerID,
Min(Sales.InvoiceDate) AS MinOfInvoiceDate,
Sum(SalesDetail.StdCost) AS SumOfStdCost
FROM
Sales INNER JOIN SalesDetail
ON Sales.SalesID = SalesDetail.SalesID
GROUP BY
Sales.CustomerID
HAVING
(((Min(Sales.InvoiceDate))>=#1/1/2013#));
表销售包含:ID,发票号码,客户ID和日期。 (我叫它发票,但我没有设计它...)SalesDetail是每个发票行项目:销售/发票ID,产品ID /数量,数量和成本
我的问题是,我将如何打破这按月进一步?任何帮助表示赞赏!
编辑: Alrighty! :)因此,这里是从上述查询输出的示例:
CustomerID | MinOfInvoice | SumOfStdCost
Customer1 | 2/1/2013 | $300
我想什么,是要表明每一张发票,它的日期(或仅仅一个月,无所谓),同时保持分组/表达式( ?)具有最小的发票日期大于2013年1月1日,如客户的标准,以便
CustomerID | InvoiceDateMonth | StdCost
Customer1 | 2/1/2013 | $100
Customer1 | 3/15/2013 | $130
Customer1 | 4/7/2013 | $70
customer1表开始2013年1月1日之后收到的发票,所以他们应该被列出。
顾客2在2012年和2013年的发票,所以它不应该是在查询结果中。
我真的希望这是可能的,我一直在打我的头好几天了,宁愿跳过不必逐个检查每个客户在我的代码的痛苦过程。再次)
感谢所有帮助; :(我相信使数据库做的工作!
术语“按月进一步打破了这一点,”是PRET ty含糊不清。考虑[编辑](http://stackoverflow.com/posts/16490206/edit)你的问题,包括要应用于选择/合并标准的你想要的结果是什么样子的例子,。有时候这样做甚至会帮助你回答你自己的问题。 – 2013-05-11 13:01:03