Query Design Help Needed

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I am having difficulty designing a query and would like some help. The query
should return only ONE row per SalesOrder. The query should SUM the
receveibles from a table Receivables where SalesOrderNo is the foreignkey
linking to Parent SalesOrder table and the receivable was paid within a
specified date range. Currently I am getting a row for EACH receivable
within a date range. Payables are summed regardless of the date range. Just
fetch all costs for the given SalesOrderNo. Any help? Do I need to be more
specific? Thanks.

Dave
 
It would help if you posted the SQL of the query that is not working (View:
SQL). And some details about your table structure.

GUESSING that maybe what you want is something like:

SELECT S.OrderNo, Sum(R.ReceivableAmount) as TotalReceived
, (SELECT Sum(AmountDue) FROM Payables WHERE Payables.OrderNo = S.OrderNo)
as AmountDue
FROM SalesOrders as S INNER JOIN Receivables as R
ON S.OrderNo = R.OrderNo
WHERE R.DatePaid Between #1/1/07# and #1/31/07#
GROUP BY S.OrderNo, (SELECT Sum(AmountDue) FROM Payables WHERE
Payables.OrderNo = S.OrderNo)



--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..
 
Yes this is indeed similar to what I need, I will Try Modifying my query
first, then if I still have no luck will post the Tables, Relationships, and
the Query.

Thank you !

David
 
Here is the ugly beast thus far:

SELECT DISTINCT SalesOrders.IsComplete, Receivables.DatePaid,
SalesOrders.SFSOID, Customers.CompanyName, Employees.LastName,
Employees.CommissionRate, (SELECT Sum(AmountPaid) AS TotalReceivables FROM
Receivables WHERE [Receivables].[SFSOID]=[SalesOrders].[SFSOID] AND
(((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))) AS TotalReceivables,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) AS TotalPaid FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID) AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS
TotalPaidFreight FROM Payables WHERE Payables.SFSOID = SalesOrders.SFSOID),0)
AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency") AS WareAndSurcharge
FROM ((Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID = SalesOrders.CustomerID) ON Employees.EmployeeID =
SalesOrders.EmployeeID) LEFT JOIN Payables ON SalesOrders.SFSOID =
Payables.SFSOID) LEFT JOIN Receivables ON SalesOrders.SFSOID =
Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order Date]))
ORDER BY Employees.LastName;

Tables SalesOrders, Payables, and Receivables are linked one to many with
SalesOrder the top of the food chain.
 
First of all, it doesn't look like you need the Payables table in the FROM
clause unless WareAndSurcharge fields come from that table. IF you can
eliminate that from the FROM clause you might be able to use an aggregate
query to simplify your query somewhat.

SELECT SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid
, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
, Sum(AmountPaid) as TotalReceivables

FROM (Employees INNER JOIN
(Customers INNER JOIN SalesOrders ON Customers.CustomerID =
SalesOrders.CustomerID)
ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN
Receivables ON SalesOrders.SFSOID = Receivables.SFSOID

WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
GROUP BY SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency")
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID)
, Nz((SELECT Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0)
,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")

ORDER BY Employees.LastName;


--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

Phonon said:
Here is the ugly beast thus far:

SELECT DISTINCT SalesOrders.IsComplete, Receivables.DatePaid,
SalesOrders.SFSOID, Customers.CompanyName, Employees.LastName,
Employees.CommissionRate, (SELECT Sum(AmountPaid) AS TotalReceivables FROM
Receivables WHERE [Receivables].[SFSOID]=[SalesOrders].[SFSOID] AND
(((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))) AS TotalReceivables,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) AS TotalPaid FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID) AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS
TotalPaidFreight FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID),0)
AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
FROM ((Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID = SalesOrders.CustomerID) ON Employees.EmployeeID =
SalesOrders.EmployeeID) LEFT JOIN Payables ON SalesOrders.SFSOID =
Payables.SFSOID) LEFT JOIN Receivables ON SalesOrders.SFSOID =
Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
ORDER BY Employees.LastName;

Tables SalesOrders, Payables, and Receivables are linked one to many with
SalesOrder the top of the food chain.

John Spencer said:
It would help if you posted the SQL of the query that is not working
(View:
SQL). And some details about your table structure.

GUESSING that maybe what you want is something like:

SELECT S.OrderNo, Sum(R.ReceivableAmount) as TotalReceived
, (SELECT Sum(AmountDue) FROM Payables WHERE Payables.OrderNo =
S.OrderNo)
as AmountDue
FROM SalesOrders as S INNER JOIN Receivables as R
ON S.OrderNo = R.OrderNo
WHERE R.DatePaid Between #1/1/07# and #1/31/07#
GROUP BY S.OrderNo, (SELECT Sum(AmountDue) FROM Payables WHERE
Payables.OrderNo = S.OrderNo)



--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..
 
Currently I do NOT need the FROM clause, However I probably will move the
Warehouse costs into the payables table. The surcharge I have no idea where
to put that since I haven't discussed that yet. Regardless, where do I send
the check for all this help? :)

Oddly enough I got a syntax error on your last post as well as this one. I
copied the code into the SQL window. It saves it, but then generates a
Syntax error when I try to "run" it.

The syntax error is in the TotalPaid Column (so it claims). I am running
Access 2003, if that makes a difference.

John Spencer said:
First of all, it doesn't look like you need the Payables table in the FROM
clause unless WareAndSurcharge fields come from that table. IF you can
eliminate that from the FROM clause you might be able to use an aggregate
query to simplify your query somewhat.

SELECT SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid
, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
, Sum(AmountPaid) as TotalReceivables

FROM (Employees INNER JOIN
(Customers INNER JOIN SalesOrders ON Customers.CustomerID =
SalesOrders.CustomerID)
ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN
Receivables ON SalesOrders.SFSOID = Receivables.SFSOID

WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
GROUP BY SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency")
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID)
, Nz((SELECT Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0)
,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")

ORDER BY Employees.LastName;


--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

Phonon said:
Here is the ugly beast thus far:

SELECT DISTINCT SalesOrders.IsComplete, Receivables.DatePaid,
SalesOrders.SFSOID, Customers.CompanyName, Employees.LastName,
Employees.CommissionRate, (SELECT Sum(AmountPaid) AS TotalReceivables FROM
Receivables WHERE [Receivables].[SFSOID]=[SalesOrders].[SFSOID] AND
(((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))) AS TotalReceivables,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) AS TotalPaid FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID) AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS
TotalPaidFreight FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID),0)
AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
FROM ((Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID = SalesOrders.CustomerID) ON Employees.EmployeeID =
SalesOrders.EmployeeID) LEFT JOIN Payables ON SalesOrders.SFSOID =
Payables.SFSOID) LEFT JOIN Receivables ON SalesOrders.SFSOID =
Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
ORDER BY Employees.LastName;

Tables SalesOrders, Payables, and Receivables are linked one to many with
SalesOrder the top of the food chain.

John Spencer said:
It would help if you posted the SQL of the query that is not working
(View:
SQL). And some details about your table structure.

GUESSING that maybe what you want is something like:

SELECT S.OrderNo, Sum(R.ReceivableAmount) as TotalReceived
, (SELECT Sum(AmountDue) FROM Payables WHERE Payables.OrderNo =
S.OrderNo)
as AmountDue
FROM SalesOrders as S INNER JOIN Receivables as R
ON S.OrderNo = R.OrderNo
WHERE R.DatePaid Between #1/1/07# and #1/31/07#
GROUP BY S.OrderNo, (SELECT Sum(AmountDue) FROM Payables WHERE
Payables.OrderNo = S.OrderNo)



--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

I am having difficulty designing a query and would like some help. The
query
should return only ONE row per SalesOrder. The query should SUM the
receveibles from a table Receivables where SalesOrderNo is the
foreignkey
linking to Parent SalesOrder table and the receivable was paid within a
specified date range. Currently I am getting a row for EACH receivable
within a date range. Payables are summed regardless of the date range.
Just
fetch all costs for the given SalesOrderNo. Any help? Do I need to be
more
specific? Thanks.

Dave
 
Try changing the expression to

(SELECT Sum(OriginalAmount)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid

I guess it is possible that things get confused with two things named
TotalPaid

'====================================================
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
'====================================================

Currently I do NOT need the FROM clause, However I probably will move the
Warehouse costs into the payables table. The surcharge I have no idea where
to put that since I haven't discussed that yet. Regardless, where do I send
the check for all this help? :)

Oddly enough I got a syntax error on your last post as well as this one. I
copied the code into the SQL window. It saves it, but then generates a
Syntax error when I try to "run" it.

The syntax error is in the TotalPaid Column (so it claims). I am running
Access 2003, if that makes a difference.

John Spencer said:
First of all, it doesn't look like you need the Payables table in the FROM
clause unless WareAndSurcharge fields come from that table. IF you can
eliminate that from the FROM clause you might be able to use an aggregate
query to simplify your query somewhat.

SELECT SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid
, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
, Sum(AmountPaid) as TotalReceivables

FROM (Employees INNER JOIN
(Customers INNER JOIN SalesOrders ON Customers.CustomerID =
SalesOrders.CustomerID)
ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN
Receivables ON SalesOrders.SFSOID = Receivables.SFSOID

WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
GROUP BY SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency")
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID)
, Nz((SELECT Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0)
,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")

ORDER BY Employees.LastName;


--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

Phonon said:
Here is the ugly beast thus far:

SELECT DISTINCT SalesOrders.IsComplete, Receivables.DatePaid,
SalesOrders.SFSOID, Customers.CompanyName, Employees.LastName,
Employees.CommissionRate, (SELECT Sum(AmountPaid) AS TotalReceivables FROM
Receivables WHERE [Receivables].[SFSOID]=[SalesOrders].[SFSOID] AND
(((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))) AS TotalReceivables,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) AS TotalPaid FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID) AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS
TotalPaidFreight FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID),0)
AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
FROM ((Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID = SalesOrders.CustomerID) ON Employees.EmployeeID =
SalesOrders.EmployeeID) LEFT JOIN Payables ON SalesOrders.SFSOID =
Payables.SFSOID) LEFT JOIN Receivables ON SalesOrders.SFSOID =
Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
ORDER BY Employees.LastName;

Tables SalesOrders, Payables, and Receivables are linked one to many with
SalesOrder the top of the food chain.

:

It would help if you posted the SQL of the query that is not working
(View:
SQL). And some details about your table structure.

GUESSING that maybe what you want is something like:

SELECT S.OrderNo, Sum(R.ReceivableAmount) as TotalReceived
, (SELECT Sum(AmountDue) FROM Payables WHERE Payables.OrderNo =
S.OrderNo)
as AmountDue
FROM SalesOrders as S INNER JOIN Receivables as R
ON S.OrderNo = R.OrderNo
WHERE R.DatePaid Between #1/1/07# and #1/31/07#
GROUP BY S.OrderNo, (SELECT Sum(AmountDue) FROM Payables WHERE
Payables.OrderNo = S.OrderNo)



--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

I am having difficulty designing a query and would like some help. The
query
should return only ONE row per SalesOrder. The query should SUM the
receveibles from a table Receivables where SalesOrderNo is the
foreignkey
linking to Parent SalesOrder table and the receivable was paid within a
specified date range. Currently I am getting a row for EACH receivable
within a date range. Payables are summed regardless of the date range.
Just
fetch all costs for the given SalesOrderNo. Any help? Do I need to be
more
specific? Thanks.

Dave
 
SELECT SalesOrders.IsComplete, SalesOrders.SFSOID, Receivables.DatePaid,
Customers.CompanyName, Employees.LastName, Employees.CommissionRate,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) FROM Payables WHERE Payables.SFSOID = SalesOrders.SFSOID)
AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge, Sum(AmountPaid) AS TotalReceivables
FROM (Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID =
SalesOrders.CustomerID) ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN Receivables ON SalesOrders.SFSOID = Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
GROUP BY SalesOrders.IsComplete, SalesOrders.SFSOID, Receivables.DatePaid,
Customers.CompanyName, Employees.LastName, Employees.CommissionRate,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency"), (SELECT
Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID), Nz((SELECT
Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0),
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
ORDER BY Employees.LastName;

This still gives me syntax errors! What the heck.. Seriously I will PAY you
to fix this !
(is this legal?) ;)
John Spencer said:
Try changing the expression to

(SELECT Sum(OriginalAmount)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid

I guess it is possible that things get confused with two things named
TotalPaid

'====================================================
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
'====================================================

Currently I do NOT need the FROM clause, However I probably will move the
Warehouse costs into the payables table. The surcharge I have no idea where
to put that since I haven't discussed that yet. Regardless, where do I send
the check for all this help? :)

Oddly enough I got a syntax error on your last post as well as this one. I
copied the code into the SQL window. It saves it, but then generates a
Syntax error when I try to "run" it.

The syntax error is in the TotalPaid Column (so it claims). I am running
Access 2003, if that makes a difference.

John Spencer said:
First of all, it doesn't look like you need the Payables table in the FROM
clause unless WareAndSurcharge fields come from that table. IF you can
eliminate that from the FROM clause you might be able to use an aggregate
query to simplify your query somewhat.

SELECT SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid
, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
, Sum(AmountPaid) as TotalReceivables

FROM (Employees INNER JOIN
(Customers INNER JOIN SalesOrders ON Customers.CustomerID =
SalesOrders.CustomerID)
ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN
Receivables ON SalesOrders.SFSOID = Receivables.SFSOID

WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
GROUP BY SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency")
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID)
, Nz((SELECT Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0)
,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")

ORDER BY Employees.LastName;


--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

Here is the ugly beast thus far:

SELECT DISTINCT SalesOrders.IsComplete, Receivables.DatePaid,
SalesOrders.SFSOID, Customers.CompanyName, Employees.LastName,
Employees.CommissionRate, (SELECT Sum(AmountPaid) AS TotalReceivables FROM
Receivables WHERE [Receivables].[SFSOID]=[SalesOrders].[SFSOID] AND
(((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))) AS TotalReceivables,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) AS TotalPaid FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID) AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS
TotalPaidFreight FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID),0)
AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
FROM ((Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID = SalesOrders.CustomerID) ON Employees.EmployeeID =
SalesOrders.EmployeeID) LEFT JOIN Payables ON SalesOrders.SFSOID =
Payables.SFSOID) LEFT JOIN Receivables ON SalesOrders.SFSOID =
Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
ORDER BY Employees.LastName;

Tables SalesOrders, Payables, and Receivables are linked one to many with
SalesOrder the top of the food chain.

:

It would help if you posted the SQL of the query that is not working
(View:
SQL). And some details about your table structure.

GUESSING that maybe what you want is something like:

SELECT S.OrderNo, Sum(R.ReceivableAmount) as TotalReceived
, (SELECT Sum(AmountDue) FROM Payables WHERE Payables.OrderNo =
S.OrderNo)
as AmountDue
FROM SalesOrders as S INNER JOIN Receivables as R
ON S.OrderNo = R.OrderNo
WHERE R.DatePaid Between #1/1/07# and #1/31/07#
GROUP BY S.OrderNo, (SELECT Sum(AmountDue) FROM Payables WHERE
Payables.OrderNo = S.OrderNo)



--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

I am having difficulty designing a query and would like some help. The
query
should return only ONE row per SalesOrder. The query should SUM the
receveibles from a table Receivables where SalesOrderNo is the
foreignkey
linking to Parent SalesOrder table and the receivable was paid within a
specified date range. Currently I am getting a row for EACH receivable
within a date range. Payables are summed regardless of the date range.
Just
fetch all costs for the given SalesOrderNo. Any help? Do I need to be
more
specific? Thanks.

Dave
 
Was that change for the GROUP BY region or in the SELECT region or Both?
Unfortunately It still is giving syntax errors.

John Spencer said:
Try changing the expression to

(SELECT Sum(OriginalAmount)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid

I guess it is possible that things get confused with two things named
TotalPaid

'====================================================
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
'====================================================

Currently I do NOT need the FROM clause, However I probably will move the
Warehouse costs into the payables table. The surcharge I have no idea where
to put that since I haven't discussed that yet. Regardless, where do I send
the check for all this help? :)

Oddly enough I got a syntax error on your last post as well as this one. I
copied the code into the SQL window. It saves it, but then generates a
Syntax error when I try to "run" it.

The syntax error is in the TotalPaid Column (so it claims). I am running
Access 2003, if that makes a difference.

John Spencer said:
First of all, it doesn't look like you need the Payables table in the FROM
clause unless WareAndSurcharge fields come from that table. IF you can
eliminate that from the FROM clause you might be able to use an aggregate
query to simplify your query somewhat.

SELECT SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid
, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
, Sum(AmountPaid) as TotalReceivables

FROM (Employees INNER JOIN
(Customers INNER JOIN SalesOrders ON Customers.CustomerID =
SalesOrders.CustomerID)
ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN
Receivables ON SalesOrders.SFSOID = Receivables.SFSOID

WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
GROUP BY SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency")
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID)
, Nz((SELECT Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0)
,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")

ORDER BY Employees.LastName;


--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

Here is the ugly beast thus far:

SELECT DISTINCT SalesOrders.IsComplete, Receivables.DatePaid,
SalesOrders.SFSOID, Customers.CompanyName, Employees.LastName,
Employees.CommissionRate, (SELECT Sum(AmountPaid) AS TotalReceivables FROM
Receivables WHERE [Receivables].[SFSOID]=[SalesOrders].[SFSOID] AND
(((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))) AS TotalReceivables,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) AS TotalPaid FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID) AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS
TotalPaidFreight FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID),0)
AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
FROM ((Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID = SalesOrders.CustomerID) ON Employees.EmployeeID =
SalesOrders.EmployeeID) LEFT JOIN Payables ON SalesOrders.SFSOID =
Payables.SFSOID) LEFT JOIN Receivables ON SalesOrders.SFSOID =
Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
ORDER BY Employees.LastName;

Tables SalesOrders, Payables, and Receivables are linked one to many with
SalesOrder the top of the food chain.

:

It would help if you posted the SQL of the query that is not working
(View:
SQL). And some details about your table structure.

GUESSING that maybe what you want is something like:

SELECT S.OrderNo, Sum(R.ReceivableAmount) as TotalReceived
, (SELECT Sum(AmountDue) FROM Payables WHERE Payables.OrderNo =
S.OrderNo)
as AmountDue
FROM SalesOrders as S INNER JOIN Receivables as R
ON S.OrderNo = R.OrderNo
WHERE R.DatePaid Between #1/1/07# and #1/31/07#
GROUP BY S.OrderNo, (SELECT Sum(AmountDue) FROM Payables WHERE
Payables.OrderNo = S.OrderNo)



--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

I am having difficulty designing a query and would like some help. The
query
should return only ONE row per SalesOrder. The query should SUM the
receveibles from a table Receivables where SalesOrderNo is the
foreignkey
linking to Parent SalesOrder table and the receivable was paid within a
specified date range. Currently I am getting a row for EACH receivable
within a date range. Payables are summed regardless of the date range.
Just
fetch all costs for the given SalesOrderNo. Any help? Do I need to be
more
specific? Thanks.

Dave
 
So trouble shoot where the syntax error is by breaking the query down.

First get rid of the subqueries. If the query works then add in one of the
subqueries. If that works, add in the next one.

If the query doesn't work, then try removing the criteria.

Continue the process. By the way, if you get the syntax error, does it give
you any other specific information. USUALLY (not always) the section of the
sql that is returned is the problem or is related to the cause of the
problem.

Paying for support is not illegal, however I don't currently do paid
support. If you are interested in that you might see if you can find a
local users group or a local developer. I will warn you that paid support
is not cheap, although it may be cheaper than you spending a lot of time
trying to make this work.

--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

Phonon said:
SELECT SalesOrders.IsComplete, SalesOrders.SFSOID, Receivables.DatePaid,
Customers.CompanyName, Employees.LastName, Employees.CommissionRate,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA, (SELECT
Sum(OriginalAmount) FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID)
AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge, Sum(AmountPaid) AS TotalReceivables
FROM (Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID =
SalesOrders.CustomerID) ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN Receivables ON SalesOrders.SFSOID = Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
GROUP BY SalesOrders.IsComplete, SalesOrders.SFSOID, Receivables.DatePaid,
Customers.CompanyName, Employees.LastName, Employees.CommissionRate,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency"), (SELECT
Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID), Nz((SELECT
Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0),
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
ORDER BY Employees.LastName;

This still gives me syntax errors! What the heck.. Seriously I will PAY
you
to fix this !
(is this legal?) ;)
John Spencer said:
Try changing the expression to

(SELECT Sum(OriginalAmount)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid

I guess it is possible that things get confused with two things named
TotalPaid

'====================================================
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
'====================================================

Currently I do NOT need the FROM clause, However I probably will move
the
Warehouse costs into the payables table. The surcharge I have no idea
where
to put that since I haven't discussed that yet. Regardless, where do I
send
the check for all this help? :)

Oddly enough I got a syntax error on your last post as well as this
one. I
copied the code into the SQL window. It saves it, but then generates a
Syntax error when I try to "run" it.

The syntax error is in the TotalPaid Column (so it claims). I am
running
Access 2003, if that makes a difference.

:

First of all, it doesn't look like you need the Payables table in the
FROM
clause unless WareAndSurcharge fields come from that table. IF you
can
eliminate that from the FROM clause you might be able to use an
aggregate
query to simplify your query somewhat.

SELECT SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID) AS TotalPaid
, Nz((SELECT Sum(FreightCoInvoiceAmt) AS TotalPaidFreight
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0) AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
, Sum(AmountPaid) as TotalReceivables

FROM (Employees INNER JOIN
(Customers INNER JOIN SalesOrders ON Customers.CustomerID =
SalesOrders.CustomerID)
ON Employees.EmployeeID = SalesOrders.EmployeeID)
LEFT JOIN
Receivables ON SalesOrders.SFSOID = Receivables.SFSOID

WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning
Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending
Order
Date]))
GROUP BY SalesOrders.IsComplete
, SalesOrders.SFSOID
, Receivables.DatePaid
, Customers.CompanyName
, Employees.LastName
, Employees.CommissionRate
, Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency")
, (SELECT Sum(OriginalAmount) AS TotalPaid
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID)
, Nz((SELECT Sum(FreightCoInvoiceAmt)
FROM Payables
WHERE Payables.SFSOID = SalesOrders.SFSOID),0)
,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")

ORDER BY Employees.LastName;


--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

Here is the ugly beast thus far:

SELECT DISTINCT SalesOrders.IsComplete, Receivables.DatePaid,
SalesOrders.SFSOID, Customers.CompanyName, Employees.LastName,
Employees.CommissionRate, (SELECT Sum(AmountPaid) AS TotalReceivables
FROM
Receivables WHERE [Receivables].[SFSOID]=[SalesOrders].[SFSOID] AND
(((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning
Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))) AS TotalReceivables,
Format((Nz([CCCharge],0)+nZ([Adjustments],0)),"Currency") AS CCA,
(SELECT
Sum(OriginalAmount) AS TotalPaid FROM Payables WHERE Payables.SFSOID
=
SalesOrders.SFSOID) AS TotalPaid, Nz((SELECT Sum(FreightCoInvoiceAmt)
AS
TotalPaidFreight FROM Payables WHERE Payables.SFSOID =
SalesOrders.SFSOID),0)
AS TotalPaidFreight,
Format(nZ([BestWayNJ],0)+nZ([WestCoastCA],0)+nZ([BarFreightIL],0)+nZ([ConsolidatedTX],0)+nZ([EvansMI],0)+nZ([Surcharge],0),"Currency")
AS WareAndSurcharge
FROM ((Employees INNER JOIN (Customers INNER JOIN SalesOrders ON
Customers.CustomerID = SalesOrders.CustomerID) ON
Employees.EmployeeID =
SalesOrders.EmployeeID) LEFT JOIN Payables ON SalesOrders.SFSOID =
Payables.SFSOID) LEFT JOIN Receivables ON SalesOrders.SFSOID =
Receivables.SFSOID
WHERE (((SalesOrders.IsComplete)=True) AND
((Receivables.DatePaid)>=[forms]![Report Date Range]![Beginning Order
Date]
And (Receivables.DatePaid)<=[forms]![Report Date Range]![Ending Order
Date]))
ORDER BY Employees.LastName;

Tables SalesOrders, Payables, and Receivables are linked one to many
with
SalesOrder the top of the food chain.

:

It would help if you posted the SQL of the query that is not working
(View:
SQL). And some details about your table structure.

GUESSING that maybe what you want is something like:

SELECT S.OrderNo, Sum(R.ReceivableAmount) as TotalReceived
, (SELECT Sum(AmountDue) FROM Payables WHERE Payables.OrderNo =
S.OrderNo)
as AmountDue
FROM SalesOrders as S INNER JOIN Receivables as R
ON S.OrderNo = R.OrderNo
WHERE R.DatePaid Between #1/1/07# and #1/31/07#
GROUP BY S.OrderNo, (SELECT Sum(AmountDue) FROM Payables WHERE
Payables.OrderNo = S.OrderNo)



--
John Spencer
Access MVP 2002-2005, 2007
Center for Health Program Development and Management
University of Maryland Baltimore County
..

I am having difficulty designing a query and would like some help.
The
query
should return only ONE row per SalesOrder. The query should SUM
the
receveibles from a table Receivables where SalesOrderNo is the
foreignkey
linking to Parent SalesOrder table and the receivable was paid
within a
specified date range. Currently I am getting a row for EACH
receivable
within a date range. Payables are summed regardless of the date
range.
Just
fetch all costs for the given SalesOrderNo. Any help? Do I need
to be
more
specific? Thanks.

Dave
 
Back
Top