I was visiting Tek-Tips.com today and found an interesting question to answer. A user was having trouble counting sales orders that had items with a certain comment. He wanted to group and count the occurrences by the item ordered. It sounded simple, but the item number was in an “item” record while the comment was on a separate “comment” record. When he filtered by the comment there would be no item numbers and if he grouped by item number the comments would be in a different group. He needed to get the two records into one record.
To solve a problem like this you need to add the sales order table to the report two separate times to create what is called a “self-referencing join”. The second time you add the table, Crystal will give the table a slightly different name (an alias) usually by adding _1 to the end of the table name. Then you treat the two instances as if they were two separate tables. In this case you could think of the first table as the “item” instance and the second as the “comment” instance. You link them based on the Sales Order and then add two filters, something like this:
{SalesOrder.LineType} = "Item" and
{SalesOrder_1.NComment} = "Your specific comment"
Note that the two rules above reference one field from each of the two table instances, bringing the two separate records together as one. From there you can group by item number (from the first table) and count the number of records within each group. Here is a link to the tek-tips question which has a screen shot of the data.
Update 10/3/2018:
Doug Weiner at Beacon Legal Software reminded me to mention that you can always rename (change the alias) of any table used in a report. Just go to the database expert and click on the table name, then right-click to get ‘rename’ or hit F2 on the keyboard. You will be allowed to type any alias you want for that table. This is especially helpful when you use the same table twice, so you can assign names that help you remember which instance is which. These names are just for the report and don’t affect anything in the database.
(For examples of my most popular formulas, please visit the FORMULAS page on my website.)