【问题标题】:Workaround with 'Column Name is not valid'“列名无效”的解决方法
【发布时间】:2012-01-11 06:47:52
【问题描述】:

您好,这个有什么解决方法吗?

SELECT        invoices.no, customers.name, invoices.mdcode,
SUM(iproducts.unitprice * iproducts.quantity) AS total,
SUM(iproducts.unitprice * iproducts.quantity) - SUM(rinvoices.payment + rinvoices.discount)
AS [Remaining Balance]
FROM          invoices INNER JOIN
              customers ON customers.id = invoices.customerid INNER JOIN
              iproducts ON invoices.id = iproducts.invoiceid LEFT OUTER JOIN
              rinvoices ON invoices.id = rinvoices.invoiceid
WHERE        ([Remaining Balance] <> '0')
GROUP BY invoices.no, customers.name, invoices.mdcode

以下返回一个错误,即“[剩余余额]”不是一个有效的列,而我已经声明了它。我不能在 WHERE 和 CASE 子句中使用它。是否有任何解决方法,因为我真的只需要获取仍有余额的发票。

感谢您的帮助!

【问题讨论】:

  • @AVD - 不,它是关于聚合过滤

标签: sql-server vb.net sql-server-ce


【解决方案1】:

你必须像这样使用 HAVING 子句

HAVING SUM(rinvoices.payment) - SUM(rinvoices.discount) <> 0

而不是在哪里

即:

SELECT        invoices.no, customers.name, invoices.mdcode,
SUM(iproducts.unitprice * iproducts.quantity) AS total,
SUM(iproducts.unitprice * iproducts.quantity) - SUM(rinvoices.payment + rinvoices.discount)
AS [Remaining Balance]
FROM          invoices INNER JOIN
              customers ON customers.id = invoices.customerid INNER JOIN
              iproducts ON invoices.id = iproducts.invoiceid LEFT OUTER JOIN
              rinvoices ON invoices.id = rinvoices.invoiceid
GROUP BY invoices.no, customers.name, invoices.mdcode
HAVING SUM(rinvoices.payment) - SUM(rinvoices.discount) <> 0

【讨论】:

  • 嘿,谢谢!哇,它奏效了!你们回复这么快!非常感谢,你们很棒!
  • 这是 StackOverflow。它很快 8-) 如果喜欢,您可以接受答案
  • 是的,我正在等待 6 分钟的间隙,然后 stackoverflow 才允许我这样做。 :)
猜你喜欢
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多