"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" SQL TIP: LIST IN TWO-COLUMN FORMAT """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" PRODUCT : R:BASE VERSION : 3.1 CATEGORY : SQL SUBCATEGORY : TWO-COLUMN FORMAT """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Replace programs, complex reports, and relational commands with SQL to achieve maximum performance. It's often convenient to use SQL to print off a quick list--like a list of phone numbers--in telephone book style (sorted down one column and then the other). In the past, we've shown you how to do this using a program or a complex report. Now, it's easy and fast to do in SQL. Modify the example shown here to work with your table and column names. This example uses a table named SALES. The columns FNAME, LNAME, and PHONE hold the first name, the last name, and the telephone number without the area code. An INTEGER column (ROWNUM) is numbered by the AUTONUM command to provide the basis for determining which column gets which row. You may need to add ROWNUM to your table before using this little SQL program. Here's the program (SQL2COL.CMD): *( SQL2COL.CMD--list names and phone) *( numbers in two columns sorted down one) *( list and then the other.) AUTONUM rownum IN sales USING 1 + ORDER BY lname NUM SELECT COUNT(*) INTO vcnt FROM sales IF (MOD(.vcnt,2))=0 THEN SELECT (t1.lname + ',' & t1.fname)=16, + '.....'=5, t1.phone=8, ' '=10, + (t2.lname + ',' & t2.fname)=16, + '.....'=5, t2.phone=8 + FROM sales t1, sales t2 WHERE + t2.rownum = (t1.rownum + .vcnt / 2) + ORDER BY t1.rownum ELSE SELECT (t1.lname + ',' & t1.fname)=16, + '.....'=5, t1.phone=8, ' '=10, + (t2.lname + ',' & t2.fname)=16, + '.....'=5, t2.phone=8 + FROM sales t1, sales t2 WHERE + t2.rownum = (t1.rownum + .vcnt / 2 + 1) + AND t1.rownum <= (.vcnt / 2) + UNION + SELECT (t1.lname + ',' & t1.fname)=16, + '.....'=5, t1.phone=8, ' ', ' ', ' ', ' ' + FROM sales t1 + WHERE t1.rownum = (.vcnt / 2 + 1) + ORDER BY t1.rownum ENDIF CLEAR VAR vcnt Notice how easy it is to add dots to connect the names and telephone numbers and how easy it is to specify 10 spaces to separate the two columns. To produce two columns, you simply use two copies of the table, nicknaming one copy T1 and the other T2. The first SELECT command works on lists that have an even number of rows, and the second works on rows that have an odd number of rows. The second is more complex, using a UNION SELECT to get the last row. You can make your list look better by using the SET HEADINGS OFF command to remove the SELECT headings and then using the WRITE command to add your own headings.