Обходной путь с «Имя столбца недопустимо» - PullRequest
1 голос
/ 11 января 2012

Привет, есть ли обходной путь с этим?

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

Следующее возвращает ошибку, что '[Remaining Balance]' не является допустимым столбцом, тогда как я уже объявил его.я не могу использовать его в предложениях WHERE и CASE.Есть ли обходной путь, так как мне действительно нужно получать только счета-фактуры, у которых все еще остаются остатки.

Спасибо за помощь!

1 Ответ

1 голос
/ 11 января 2012

Вы должны использовать предложение 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
...