Sql server 2008 在SQL Server中使用sum连接三个表

Sql server 2008 在SQL Server中使用sum连接三个表,sql-server-2008,join,sum,Sql Server 2008,Join,Sum,我有三张桌子: Sales.SalesOrderHeader: SalesOrderID(主键) OrderDate TotalDue,salersonid 销售。销售人员: BusinessEntityID(主键) Person.Person: BusinessEntityID(主键) FirstName LastName 表salessorson的作用类似于关联实体,它只提供一个公共PK(与Person中的名称相同,在saleorderheader中命名为salessors

我有三张桌子:

  • Sales.SalesOrderHeader

    • SalesOrderID
      (主键)
    • OrderDate
    • TotalDue,salersonid
  • 销售。销售人员

    • BusinessEntityID
      (主键)
  • Person.Person

    • BusinessEntityID
      (主键)
    • FirstName
    • LastName
  • salessorson
    的作用类似于关联实体,它只提供一个公共PK(与
    Person
    中的名称相同,在
    saleorderheader
    中命名为
    salessorsonid

    现在,我想显示一个如下所示的表:

       BusinessEntityID  FirstName  LastName  Total attributed sales
       ----------------  ---------  --------  ----------------------
    1  285               Saeeed     Abbas     32323.88
    2  287               Amy        Albert    1214323.98
    …  …                 …          …         …
    
    有一些
    销售订单
    的销售人员为
    ,因此我想忽略这一点,并汇总每个销售人员2008年的销售额(汇总
    总到期日

    这是到目前为止我的T-SQL代码:

    select
        SUM(s.TotalDue) as 'Total attributed sales',
        p.BusinessEntityID,
        p.FirstName,
        p.LastName
    from Sales.SalesOrderHeader as s
    right outer join Sales.SalesPerson as sp on s.SalesPersonID=sp.BusinessEntityID 
    left outer join Person.Person as p on sp.BusinessEntityID=p.BusinessEntityID
    where 
    s.OrderDate between '2008-01-01 00:00:00.000' and '2008-12-31 23:59:59.999'
    and SalesPersonID is not null
    group
    --Order 
    by SalesOrderID, 
    SalesPersonID
    
    没有语法错误,但我的查询无法正常工作

    SQL Server的错误消息如下所示

    列“Person.Person.BusinessEntityID”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中


    有人能帮我吗?非常感谢你的帮助

    您需要按select中的所有非聚合列进行分组

    即:


    谢谢成功了。但我发现,个别销售人员的订单总数并不等于总数。相反,当我使用按姓氏排序的订单时,我发现它们是重复的销售人员姓名。你能帮我进一步吗?你不需要加入销售人员的行列,因为你说它只是一个关联表。您执行的
    分组顺序也很重要。在这种情况下,您不需要按SalesOrderID或SalesorSoId分组,因为您仅选择BusinessEntityID。
    选择p.FirstName+p.LastName+'(“+p.BusinessEntityID+”)作为“销售人员”,四舍五入(总和(s.TotalDue),2)作为sales.SalesOrderHeader作为s右外部联接sales.SalesPerson作为s.SalesPersonID=sp.BusinessEntityID左外部联接Person.Person作为p在s.BusinessEntityID=p.BusinessEntityID中,其中s.OrderDate介于“2008-01-01 00:00.000”和“2008-12-31 23:59:59.999”之间,具有总和(s.TotalDue)>1000000按“销售人员”分组,“总归属销售”按总额排序(s.TotalDue)
    Hi,现在我想连接frstname和姓氏以及BusinessEntityID,只选择超过一百万的归属销售,按总归属销售排序。上面是我的代码,但是SQLServer说最后一个“组”附近的语法不正确。你能帮我做这个吗?非常感谢<代码>分组依据
    应在具有子句的
    之前。在将来,考虑为一个新的查询打开一个新的问题,并在他们帮助你足够的时候,把答案标记为被接受。
    
    group by p.BusinessEntityID, p.FirstName, p.LastName