We help IT Professionals succeed at work.

Need assistance with SQL Query

Medium Priority
196 Views
Last Modified: 2012-05-07
I am using the following query to return some information for a report:

SELECT tblInvoice.ID, tblInvoice.LegacyInvoiceNumber, tblInvoice.DateSubmitted, tblPaymentTerms.Terms, tblInvoiceStatus.Status, tblCompany.Name AS Company, tblEmployee.UserID AS Employee FROM tblCompany INNER JOIN tblInvoice ON tblCompany.ID = tblInvoice.fkCompany INNER JOIN tblPaymentTerms ON tblInvoice.fkPaymentTerms = tblPaymentTerms.ID INNER JOIN tblInvoiceStatus ON tblInvoice.fkInvoiceStatus = tblInvoiceStatus.ID INNER JOIN tblEmployee ON tblInvoice.fkEmployee = tblEmployee.ID WHERE tblInvoice.fkPaymentTerms IN (1, 2, 3, 4) AND tblInvoice.fkInvoiceStatus IN (1, 2, 3, 4, 5, 6, 7) ORDER BY ID DESC

It works as expected.  Now I need to add an additional calculated field to be returned with the query.  That is the "balance due" on each of the invoices (rows) of the preceding query.  This calculation is done in the program that we use with a bunch of functions, but I need to be able to return the value as part of the above query.  Right now here are the queries that are called by the functions to produce the desired result.  The issue that I can't seem to get my brain around is how to correctly calculate the sales tax based on taxable and non-taxable items in "tblInvoice_detail".

' TOTAL PAYMENTS ON THIS INVOICE
SELECT SUM(Amount) AS Total FROM tblInvoicePayment WHERE (fkInvoice = {0})

' SUM OF ALL DETAIL ROWS ON THIS INVOICE
SELECT SUM(Quantity * UnitPrice) AS SubTotal FROM tblInvoiceDetail WHERE (fkInvoice = {0})

' IF THE INVOICE IS NOT TAX EXEMPT THEN CALCULATE SALES TAX ON TAXABLE ITEMS
SELECT SUM(tblInvoiceDetail.Quantity * tblInvoiceDetail.UnitPrice * tblInvoice.SalesTaxRate) AS SubTotal FROM tblInvoiceDetail INNER JOIN tblInvoice ON tblInvoiceDetail.fkInvoice = tblInvoice.ID WHERE (tblInvoice.ID = {0}) AND (tblInvoiceDetail.Taxable = 1)

Is there a way to roll all this up into one query so that I would have a new calculated field "BalanceDue" returned along with the other information in the first query?  Thanks!
Comment
Watch Question

Commented:
Forgive me for asking, but is there a TotalAmount in tblInvoice so that you don't have to recalculate the total each time?

Author

Commented:
No, the database doesn't store any calculated fields unfortunately.
Chief Technology Officer
CERTIFIED EXPERT
Most Valuable Expert 2011
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
Right on the money.  Thanks!
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.