【问题标题】:sql server how to display data which is in the month of august?sql server如何显示8月份的数据?
【发布时间】:2012-03-28 07:01:51
【问题描述】:

大家好,我的 sql 代码有一个小问题 我只需要在 2008 年 8 月的数据库中显示数据。

到目前为止我的代码是这样的

我应该显示每个销售人员在 2008 年 8 月的销售额

SELECT p.BusinessEntityID,p.FirstName,p.LastName, ROUND(SUM(soh.TotalDue),2) AS 'Total Attributed Sales' FROM Person.Person p , Sales.SalesPerson s,Sales.SalesOrderHeader soh WHERE p.BusinessEntityID = s.BusinessEntityID 和 p.BusinessEntityID = soh.SalesPersonID AND soh.OrderDate >= '2008' AND soh.OrderDate

我有我的数据库的图像
http://www.2shared.com/photo/h2-jMQyP/AdventureWorks2008.html

【问题讨论】:

  • 你的表的结构是什么?你有日期栏吗?还是带有年份和月份的列?
  • 我们需要更多关于您的数据库的信息,我假设您在 [Sales] 表中存储了某种日期?您要过滤的存储日期在哪里?它存储的格式是什么?
  • @Uriel_SVK, @kamui 请检查我的问题的编辑版本
  • 我不明白您编辑的问题:您是否希望我们为您编写整个查询以阅读该架构?不...
  • @Marco 我想包括 2008 年 8 月每个人的销售额,我不明白你的代码

标签: mysql sql


【解决方案1】:

你可以试试这个:

SELECT DISTINCT p.BusinessEntityID,p.FirstName,p.LastName
FROM Person.Person p INNER JOIN Sales.SalesPerson s
    ON p.BusinessEntityID = s.BusinessEntityID
WHERE MONTH(p.your_date) = 8
  AND YEAR(p.your_date) = 2008

请注意:当您必须加入表时,请使用 JOIN 语句代替 WHERE;此处的 sql 引擎了解您正在加入表并将执行计划转换为使用 JOIN,但在其他情况下,您可能会对表进行笛卡尔积,这会使您的查询变得非常庞大!

【讨论】:

    【解决方案2】:

    查看您的数据库结构,如果您想获取特定人的销售额,您可能还必须在 SalesOrderHeader 中添加一个链接

    编辑 2: 对脚本稍作修改将获得 2008 年 8 月所有销售人员的所有销售应付总额

     SELECT p.BusinessEntityID,p.FirstName,p.LastName, SUM(soh.TotalDue)
     FROM Person.Person p , Sales.SalesPerson s,Sales.SalesOrderHeader soh
    
     WHERE  p.BusinessEntityID = s.BusinessEntityID
     AND s.BusinessEntityID = soh.BusinessEntityID
    
     AND MONTH(soh.OrderDate) = 8
     AND YEAR(soh.OrderDate) = 2008
     GROUP BY p.BusinessEntityID
    

    【讨论】:

    • @kamui 嘿兄弟我的问题是写一个查询来找出每个销售人员在 2008 年放置的所有 SalesOrders 的总销售额。使用订单的 TotalDue 来查找销售额和 SalesPersonID找到要归因的销售人员。例如。 SalesOrderID 43659 应归属于 SalesPersonID 279。
    • @kamui 我应该得到 17 行而不是我只得到 10 行而且销售数字是错误的
    • @user1297398 我想有些人失踪了,他们在 2008 年 8 月有销售吗?如果它们不在所有 3 个表中,那么它们将不会出现在结果中。所有结果是否都是唯一的,它们应该是唯一的,但也许我在表结构中遗漏了一些东西。
    • @kamui 我也可以给你正确的结果,如果你能给我你的电子邮件 ID 什么的。是的,所有的销售人员都将在 8 月份进行销售
    • 检查你的电子邮件,兄弟发给你的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    相关资源
    最近更新 更多