首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我运行对此问题的查询时,不获取任何值

当我运行对此问题的查询时,不获取任何值
EN

Stack Overflow用户
提问于 2021-03-05 00:30:49
回答 2查看 47关注 0票数 2

作业问题是..。

列出订单的客户名称、订单状态、订购日期、订单上的项目计数和订单上的平均订购数量(如果订单上的项目数量大于300 )。

我正在使用冒险工程2019年的任务。

我想出的答案是.

代码语言:javascript
复制
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”相同,并获得结果。任何想法都将不胜感激。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-05 01:00:13

在快速查看在线模式(我没有安装它)的基础上,我的理解是,您需要通过Person.Person将Sales.Customer连接到Sales.SalesOrderHeader。因此,也许可以尝试以下几点:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2021-03-05 02:12:55

首先,按LastName + ', ' + FirstName分组将提供不准确的结果。因为有大约380个名字和重复。示例:

其次,Manachi是正确的加入。

因此,您的最后查询应该如下所示:

代码语言:javascript
复制
WITH cte AS (
    SELECT
        BusinessEntityID AS CustomerId,
        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.Customer c ON c.PersonID = pp.BusinessEntityID
        JOIN Sales.SalesOrderHeader ssoh ON c.CustomerID = ssoh.CustomerID
        JOIN Sales.SalesOrderDetail ssod on ssoh.SalesOrderID = ssod.SalesOrderid
    GROUP BY
        BusinessEntityID,
        LastName + ', ' + FirstName,
        ssoh.OrderDate,
        ssoh.Status
    HAVING
        SUM(ssod.OrderQty) > 300
)
SELECT
    [Customer Name],
    [Order Status],
    [Date Order],
    [Count of Items],
    [Average Quantity]
    FROM cte
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66485039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档