sql - 当我对这个问题运行查询时没有得到任何价值
问题描述
作业问题是...
列出订单的客户名称、订单状态、订购日期、订单商品数量以及订单商品数量大于 300 的平均订购数量。
我正在使用 Adventure Works 2019 进行作业。
我能想到的答案是......
SELECT
LastName + ', ' + FirstName AS 'Customer Name',
ssoh.Status AS 'Order Status',
ssoh.OrderDate AS 'Date Order',
SUM(ssod.Orderqty) AS 'Count of Items',
AVG(ssod.Orderqty) AS 'Average Quantity'
FROM
Person.Person pp
JOIN Sales.SalesOrderHeader ssoh ON pp.BusinessEntityID = ssoh.CustomerID
JOIN Sales.SalesOrderDetail ssod on ssoh.SalesOrderID = ssod.SalesOrderid
GROUP BY
LastName + ', ' + FirstName,
ssoh.OrderDate,
ssoh.Status
HAVING
SUM(ssod.OrderQty) > 300
当我将内部联接更改为外部联接时,我得到客户名称的空值。我再次检查了“customerID”外键以确保它与主键“BusinessEntityID”相同并获得结果。任何想法将不胜感激。谢谢
解决方案
基于在线快速查看架构(我没有安装它),我的理解是您需要通过 Sales.Customer 将 Person.Person 加入到 Sales.SalesOrderHeader。所以也许尝试以下方法:
FROM
Person.Person pp
JOIN Sales.Customer sc ON pp.BusinessEntityID= sc.PersonID
JOIN Sales.SalesOrderHeader ssoh ON sc.CustomerID= ssoh.CustomerID
JOIN Sales.SalesOrderDetail ssod on ssoh.SalesOrderID = ssod.SalesOrderid
推荐阅读
- scala - 使用 Spark Scala 计算训练数据集的均值、变异和标准差
- python - 如何根据特定条件将行分组在一起?(R 或 Python)
- java - Java 版本的 ApkSignerTool 问题
- r - 以 R 中的分类列为条件整合来自另一个数据集的数据
- c - 删除评论的程序,只有一个文件
- castle-windsor - Rebus,使用 Castle Windsor 和 Rebus
- sql-server - 事务成功提交但未结束
- python - 如何将字符串转换为数组?
- sql-server - SQL Server 十进制除法不四舍五入结果
- javascript - 画布在桌面上完美工作,但在移动设备上不起作用