Previous Next

Building a Report That Contains Subreports : Tutorial 4: Building a report containing side-by-side subreports : Task 11: Display only customers that have orders or payments

Task 11:

The database contains customers that do not have orders or payments. The query for the customers report returns all customers. When you run the report, there are customer rows that show only the column headings for the Orders and Payments tables, as shown in Figure 13‑25.

Figure 13-25 Report shows no order or payment data for one customer

Figure 13-25

You can exclude customers that do not have orders or payments by changing the query for the customers report.

1
2
3
WHERE
EXISTS
(SELECT Orders.customerNumber
FROM Orders
WHERE Customers.customerNumber =
Orders.customerNumber)
OR
EXISTS
(SELECT Payments.customerNumber
FROM Payments
WHERE Customers.customerNumber =
Payments.customerNumber)
The WHERE EXISTS clause checks the Orders and Payments tables for customerNumber values that match the customerNumber values in the Customers table. Only rows that have matching customerNumber values are selected. The complete query should look like the one shown in Figure 13‑26.

Figure 13-26 Updated SELECT query in Edit Data Set

Figure 13-26
4
5
Preview the report. Scroll down the report to check the output. The report no longer displays customers that do not have orders or payments.

(c) Copyright Actuate Corporation 2008