2012-01-11 147 views
1

嗨有沒有解決這個問題的方法?解決方法'列名無效'

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子句中使用它。是否有任何解決辦法,因爲我真的只需要獲得仍有餘額的發票。

感謝您的幫助!

+0

@AVD - 不,它大約在聚集 – 2012-01-11 06:53:36

回答

1

你必須使用HAVING子句這樣

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

而不是WHERE

即:

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 
+0

過濾嘿感謝!哇它的工作!你們這麼快回復!謝謝你很多,你們都很棒! – 2012-01-11 06:57:23

+0

這是StackOverflow。它是快速的8-)你可能會接受一個答案,如果喜歡它 – 2012-01-11 06:58:14

+0

是的,我在等待6分鐘的差距之前,stackoverflow允許我。 :) – 2012-01-11 07:03:10