【问题标题】:SQL Northwind PracticeSQL 北风实践
【发布时间】:2016-04-25 02:11:51
【问题描述】:

我有一个练习题:

显示每个订单项目 - 客户名称和订单 ID、产品名称、订购数量、产品价格和总价格(订购数量 * 产品价格)以及订购日期和发货日期之间的差距(以天为单位的差距)。按订单编号订购。

北风当然。

我的查询是:

SELECT 
    C.ContactName, O.OrderID, P.ProductName, 
    OD.Quantity, OD.UnitPrice, 
    OD.Quantity * OD.UnitPrice as [Total Price]
FROM 
    Orders O, Customers C, Products P, [Order Details] OD
WHERE 
    C.CustomerID = O.CustomerID
    AND O.OrderID = OD.OrderID
    AND OD.ProductID = P.ProductID
ORDER BY 
    O.OrderID;

我不明白的是:什么是“日期和发货日期之间的差距”。没看懂。

谢谢。

【问题讨论】:

  • 学习使用正确的显式JOIN 语法。 从不FROM 子句中使用逗号。
  • 订单日期和发货日期之间的差距仅表示“订单日期和发货日期之间的天数”。如果订单日期为 04/21/2016,发货日期为 04/24/2016,则间隔为 3 天。
  • @GordonLinoff 永远不要在FROM 子句中使用逗号的建议不是在顶部和误导吗?显然,我们可以影响一些 QO 决策,但是查询优化器通常仍然能够选择一个有效的连接算法,因此我们可以编写我们喜欢表达的查询......这不是声明性语言的美妙之处吗?那一天?

标签: sql sql-server northwind


【解决方案1】:

与您的问题有关,订购日期和发货日期之间的差距是指以下计算值:

DATEDIFF(day, date_ordered, date_shipped) AS GapDays

使用 SQL DATEDIFF() 函数,其中 date_ordereddate_shipped 对应于表中的字段名称(您可能需要根据实际字段重命名它们;另外,请按照此处的说明更正 JOIN 语法;https://msdn.microsoft.com/en-us/library/zt8wzxy4.aspx).

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    相关资源
    最近更新 更多