sql - SQL Server - SELECT 语句不返回结果
问题描述
使用 AdventureWorks 数据库,我收到了一个问题:“列出订单客户名称、订单状态、订购日期、订单商品数量以及订单商品数量大于 300 的平均订购数量”。但是,我下面的 SELECT 语句没有返回任何结果......我做错了什么?
SELECT scpii.LastName + ', ' + scpii.FirstName AS 'Customer Name', ssoh.Status AS 'Order Status', ssoh.OrderDate AS 'Date Ordered', SUM (ssod.OrderQty) AS 'Count of Items', AVG (ssod.OrderQty) AS 'Average Quantity'
FROM Sales.CustomerPII scpii
INNER JOIN Sales.SalesOrderHeader ssoh
ON ssoh.CustomerID = scpii.CustomerID
INNER JOIN Sales.SalesOrderDetail ssod
ON ssod.SalesOrderID = ssoh.SalesOrderID
GROUP BY scpii.LastName, scpii.FirstName, ssoh.Status, ssoh.OrderDate, ssod.OrderQty
HAVING SUM(ssod.OrderQty) > 300;
解决方案
- 您不需要在
ProductID
和上进行分组Orderqty
。如果您对它们进行分组,您会将其分组到单个订单项目级别。所以你永远数不过300 - 订单上的商品数量实际上应该是
Orderqty
.
尝试:
SELECT scpii.LastName + ', ' + scpii.FirstName AS 'Customer Name',
ssoh.Status AS 'Order Status',
ssoh.OrderDate AS 'Date Ordered',
SUM (ssod.OrderQty) AS 'Count of Items',
AVG (ssod.OrderQty) AS 'Average Quantity'
FROM Sales.CustomerPII scpii
INNER JOIN Sales.SalesOrderHeader ssoh
ON ssoh.CustomerID = scpii.CustomerID
INNER JOIN Sales.SalesOrderDetail ssod
ON ssod.SalesOrderID = ssoh.SalesOrderID
GROUP BY scpii.LastName,
scpii.FirstName,
ssoh.Status,
ssoh.OrderDate
HAVING SUM (ssod.OrderQty) > 300;
推荐阅读
- amazon-web-services - AWS CodeBuild 作为非 root 用户
- sql - TSQL:查找上一个“星期几”逻辑的日期。是否有任何边缘情况会失败并且可以简化吗?
- spring - Spring Config:将文件内容注入属性
- mongodb - 如何更新数组的部分文档
- java - 在 Android 或 Xamarin 中为 Edittext 设置提示
- r - 抑制 Rmd 内联输出中冗长的 kable 表,同时保留在最终 PDF 中
- c# - 基于网络抓取创建新文件然后下载到客户端的浏览器?
- python - 有没有办法在发送之前检查完整的发布请求标头和正文?
- php - 自定义管理员登录页面 WHMCS
- php - cURL 和 file_get_contents 不适用于特定 URL