【问题标题】:How to select specific row from SQL table and join multiple tables in SQL server?如何从 SQL 表中选择特定行并连接 SQL 服务器中的多个表?
【发布时间】:2019-04-14 14:05:47
【问题描述】:

我正在使用 Northwind 数据库来学习 SQL Server。我正在尝试运行 SQL 查询,以便我可以从Employees 表中选择特定的员工(EmployeeID=1),并从Orders 表中选择与该员工相关的每个订单,它是如何运送(运送方式),运送它的公司,从订单日期到发货日期的总天数。对于我有以下查询,我不确定我的查询是否正确。有人可以验证一下吗?

我尝试在查询下运行

  SELECT Employees.EmployeeID,
    Orders.OrderID,DATEDIFF(DAY,Orders.OrderDate,Orders.ShippedDate) AS 'Date 
    Diff',
    Orders.ShipVia,Shippers.ShipperID,Shippers.CompanyName FROM  Employees
    LEFT JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
    LEFT JOIN Shippers ON Orders.ShipVia=Shippers.ShipperID
    WHERE Employees.EmployeeID =1
    GROUP BY 

 Orders.ShipVia,Shippers.ShipperID,Shippers.CompanyName,Employees.EmployeeID,Orders.OrderID,Orders.OrderDate,Orders.ShippedDate

【问题讨论】:

  • 你的GROUP BY 似乎是多余的。
  • @GordonLinoff .. 另一种方法是什么?只需删除 Group BY... 我在想是否有其他方法可以解决这个问题?
  • 你没有使用任何聚合函数那么你为什么要使用 group by ..没有聚合它会改变结果
  • @KedarLimaye.. 你能详细说明一下吗?
  • 是否有您准备查询的特定要求?

标签: sql sql-server aggregate sql-server-2014


【解决方案1】:

这里有一些使用 GROUP BY 子句的规则-

1) 一个 SELECT 语句子句,将查询结果分成多组行,通常是为了对每个组执行一个或多个聚合。 SELECT 语句每组返回一行。

2) 指定列或列上的非聚合计算。此列可以属于表、派生表或视图。该列必须出现在 SELECT 语句的 FROM 子句中,但不需要出现在 SELECT 列表中。

3) 列必须出现在 SELECT 语句的 FROM 子句中,但不要求出现在 SELECT 列表中。但是,列表中任何非聚合表达式中的每个表或视图列都必须包含在 GROUP BY 列表中

这些是 SQL Server 相关文档中的一些要点

希望这能解决您的问题或清除您的概念。

更多信息在- https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-2017

【讨论】:

  • 感谢您的解释和链接
猜你喜欢
  • 2011-12-26
  • 2021-02-09
  • 1970-01-01
  • 2022-01-19
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多