【问题标题】:Not sure what I am doing wrong - SQL code is invalid不知道我做错了什么 - SQL 代码无效
【发布时间】:2019-03-13 16:41:11
【问题描述】:

不确定我在这里做错了什么。每次运行此代码时,我都会收到此错误

消息 8120,第 16 级,状态 1,第 55 行
列 'Vendors.VendorName' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

这是代码

select 
    VendorName, VendorContactFName, VendorContactLName,
    sum(InvoiceTotal - CreditTotal- PaymentTotal) as BalanceDue
from 
    Vendors 
full join 
    Invoices on Vendors.VendorID = Invoices.VendorID
where 
    InvoiceTotal - CreditTotal- PaymentTotal > 0
order by 
    BalanceDue desc

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    这可能是你想要的:

    select v.VendorName, v.VendorContactFName, v.VendorContactLName,
           sum(i.InvoiceTotal - i.CreditTotal - i.PaymentTotal) as BalanceDue
    From Vendors v join
         Invoices i
         on v.VendorID = i.VendorID
    where i.InvoiceTotal - i.CreditTotal - i.PaymentTotal > 0
    group by v.VendorName, v.VendorContactFName, v.VendorContactLName
    order by BalanceDue desc;
    

    注意事项:

    • 您在select 中有sum(),但没有group by。这是主要问题。
    • full join 不合适。事实上,你想要一个inner joinwhere 子句要求匹配 invoice 表。 group by 要求匹配 vendor 表。
    • 限定所有列引用。

    【讨论】:

    • 非常感谢,我所要做的只是建立一个小组,但感谢您的帮助
    猜你喜欢
    • 2012-05-19
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多