【发布时间】:2013-05-10 20:19:15
【问题描述】:
我正在尝试为 MS Access 构建一个 SQL 语句,以按产品从我们的数据库中获取所有销售,这些销售在 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/编号、数量和成本
我的问题是,如何按月进一步细分?任何帮助表示赞赏!
编辑: 好吧! :) 所以这是上述查询的输出示例:
CustomerID | MinOfInvoice | SumOfStdCost
Customer1 | 2/1/2013 | $300
我想要的是显示每张发票及其日期(或只是月份,没关系),同时保持最小发票日期大于 1/1/ 的客户的分组/表达式 (?) 标准2013年,就这样
CustomerID | InvoiceDateMonth | StdCost
Customer1 | 2/1/2013 | $100
Customer1 | 3/15/2013 | $130
Customer1 | 4/7/2013 | $70
客户 1 在 2013 年 1 月 1 日之后开始收到发票,因此应将其列出。
客户2有2012年和2013年的发票,所以不应该在查询结果中。
我真的希望这是可能的,我已经为此绞尽脑汁好几天了,我宁愿跳过必须在我的代码中单独检查每个客户的痛苦过程。 :(我相信让数据库完成这项工作。;)
再次感谢您的帮助!
【问题讨论】:
-
“按月进一步细分”一词相当模糊。考虑editing 您的问题,包括您希望结果看起来如何的示例,以及您希望应用的选择/聚合标准。有时这样做甚至可以帮助您回答自己的问题。
标签: sql ms-access ms-access-2010