【问题标题】:SQL sum, multiple Group By's and Date criteriaSQL 总和、多个 Group By 和 Date 条件
【发布时间】:2017-05-05 13:39:42
【问题描述】:

我希望对 SQL 表执行总和计算,以查找特定销售人员在特定日期(包括特定日期)持有的特定库存项目的数量。

只要我不考虑日期范围标准,我就可以执行求和功能来查找销售人员/项目的数量,但是一旦我添加了这方面,一切都变得有点梨形!到目前为止,这是我的代码:

SELECT Salesperson, Item No, Sum(Quantity) AS 'Quantity'
FROM dbo
WHERE (Location Code='VAN')
GROUP BY Salesperson, Item No,
HAVING (Registering Date<={ts '2017-05-03 00:00:00'})

需要位置代码 = VAN 过滤器以确保它忽略仓库数量。我的 SQL 知识仅限于我在工作中遇到的少数实例,并且我的交互主要基于 Excel 中的 Microsoft Query。查看上面的代码时,我认为“注册日期”标准应该在“WHERE”部分,但是当我使用 Microsoft Query 中可用的选项添加标准时,它会创建“HAVING”行。

如果有人可以提供任何指示,将不胜感激!

干杯

彼得

【问题讨论】:

  • 你能提供你得到的异常信息吗?
  • 您在GROUP BYItem No 末尾有一个逗号在GROUP BY 中无效,并且可能不是您在SELECT 中想要的。
  • War- 当我执行查询时没有显示异常信息或提示 - 它似乎运行良好,但是显示的数量与我执行检查计算的手动总和不匹配。 Gordon Linoff - 由于当前数据的字符串长度,此处使用的列名略有更改。在我的数据库中,“项目编号”的列是 Item_No

标签: sql microsoft-query


【解决方案1】:

我会想象这样一个查询:

SELECT Salesperson, [Item No], Sum(Quantity) AS Quantity
--------------------^ escape the non-standard column name
FROM dbo.??
---------^ table name goes here
WHERE Location Code = 'VAN' AND
      [Registering Date] <= '2017-05-03'
------^ put the filtering condition in the correct clause
GROUP BY Salesperson, Item No
-----------------------------^ remove the comma

您编写的代码有多个错误。我猜大多数是转录错误而不是原始查询(例如,如果FROM 中没有给出表,则查询不会运行)。然后,“主要”错误将在 HAVING 子句而不是 WHERE 子句中过滤。

【讨论】:

  • 非常感谢 Gordon,这为我解决了问题。我怀疑它与“HAVING”行有关——直到现在我才看到那句话。由于某种原因,在 Microsoft Query 中应用不同的条件时,它会将位置代码 1 放入 WHERE 语句中,并将注册日期条件放入 HAVING 语句中。
  • 如果我想过滤结果总和数量,只显示数量大于 0 的销售人员/项目的实例,那么我是否使用 HAVING 语句?我尝试了一些变化,但添加最后一行让我回到了我一开始遇到的那种错误。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 2021-02-04
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多