Some databases include the keyword TOP, which limits the result set to a specified number of rows. Unfortunately, SQL on the iSeries does not support TOP. However, there is still a way to perform the same task. The Fetch First keyword limits the result set just as TOP does.
The following example illustrates its use. This statement selects all the columns from the customer master file and puts all of the records in order by total sales in a descending sequence. It then limits the result set to the first 10 rows: SELECT * FROM CUSTMAST ORDER BY TOTSALES DESC FETCH FIRST 10 ROWS ONLY This example is fairly straightforward, but there are other more sophisticated uses for this same tool. Your first inclination might be to use this keyword inside the IN keyword or within a joined sub-select. Unfortunately, it can't be used in those parts of an SQL statement! It can still be used, but it must come at the end of your statement.
If the total sales amount were not stored in the customer master file and had to be derived from the order history file, the statement might look as follows:
SELECT CUSTNAME, TOTSALES FROM CUSTMAST C JOIN (SELECT CUSTNBR, SUM(SALESAMT) AS TOTSALES FROM ORDERHIST GROUP BY CUSTNBR) AS O ON C.CUSTNBR = O.CUSTNBR ORDER BY TOTSALES DESC FETCH FIRST 10 ROWS ONLY This statement creates a temporary file object called O that contains the sales totals from the order history file for each customer. That temporary file is joined to the customer master file to retrieve the name, and then the records are sorted into descending sequence by total sales and the first 10 rows are included. All other records are discarded.
These two examples should give you a pretty good idea of how use the Fetch First keyword to restrict your result set to just the records you want.
Kevin Forsythe has over 18 years of experience working with the iSeries platform and its predecessors. He has been a member of the DMC team for the past nine years. Kevin's primary responsibility is providing iSeries education, but he also provides customers with project management, system design, analysis, and technical construction. In addition to his technical skills (RPG IV, CL, OS/400, SQL, FTP, Query, VB, Net.Data), Kevin possesses the ability to communicate new and complex concepts to his students. He has been the primary instructor for DMC's iSeries-based AS/Credentials training courses since 1997 and has authored courses such as Advanced ILE, SQL, Embedded SQL, Operations Navigator, and Intro to WebSphere Studio. An award-winning speaker, he has spoken at every COMMON Conference since the spring of 2000.
|
Kevin Forsythe |
| About the Author: |
|
Kevin Forsythe has worked on IBM midrange systems for 25 years. With many years of experience in programming, analysis, consulting, and instruction, he is uniquely skilled at making difficult material more easily understood. His comprehensive background includes practical application, education, and research and provides a perspective that allows him to help others steer their way through the technical maze that surrounds them. Kevin is a member of COMMON's Speaker Hall of Fame, and he currently develops applications for DriveTime. Kevin has written numerous articles on a variety of AS/400/iSeries/System i/IBM i topics.
MC Press books written by Kevin Forsythe available now on the MC Press Bookstore.
| | Read More >> |
|