This page intentionally left blank chapter 5 Sorting Data Keywords Introduced: ORDER BY, ASC, DESC The ability to present data in a sorted order is often essential to the task at hand. For example, if you were shown a large list of customers in a random order, you’d find it difficult to locate any one particular customer. However, if the same list were sorted alphabetically, then you could quickly locate the desired customer. The idea of sorting data alphabetically applies to many situations, even when the data isn’t strictly alphabetic in nature. For example, you may want to sort a list of orders by the order date and tim e to allow you to rapidly find an order taken at a particular date and time. Or you might want to sort a list of orders by the order amount, to allow you to view orders from the smallest to the largest. No matter what particular form your sort takes, it adds a useful way to organize your data as it is being presented to the end user. Adding a Sort Up until now, data has not been returned in any particular order. When a SELECT is issued, you never know which row will come first. If the query is executed from within a software program, and no one ever sees the data at that point in time, then it really doesn’t matter. But if the data is to be immediately displayed to a user, then the order of rows is often significant. A sort can be added easily to a SELECT statement by using an ORDER BY clause. 47 Here’s the general format for a SELECT statement with an ORDER BY clause: SELECT columnlist FROM tablelist ORDER BY columnlist The ORDER BY clause is always after the FROM clause, which, in turn, is always after the SELECT keyword. The italicized columnlist for the SELECT and ORDER BY keywords indicates that any number of columns can be listed. The columns in columnlist can be individual columns or more complex expressions. The columns specified after the SELECT and ORDER BY keywords can be entirely different columns. The italicized tablelist indicates that any number of tables can be listed, although you have not yet seen the syntax for listing multiple tables. Turning to an example, you’ll be working from data in this Customers table: CustomerID FirstName LastName 1 William Smith 2 Janet Smith 3 Natalie Lopez 4 Brenda Harper Sorting in Ascending Order If you want to sort data in alphabetic order, with A coming before Z, then you simply need to add an ORDER BY clause to the SELECT. For example: SELECT FirstName, LastName FROM Customers ORDER BY LastName brings back this data: FirstName LastName Brenda Harper Natalie Lopez William Smith Janet Smith Chapter 5 ■ Sorting Data48 Since there are two Smiths, William and Janet, there’s no way to predict which one will be listed first. This is because you are only sorting on LastName, and there are multiple rows with the same last name. Similarly, if you issue this SELECT: SELECT FirstName, LastName FROM Customers ORDER BY FirstName then this data is retrieved: FirstName LastName Brenda Harper Janet Smith Natalie Lopez William Smith The order is now completely different since you’re sorting by first name. SQL provides a special keyword named ASC, which stands for ascending. This keyword is completely optional and largely unnecessary since all sorts are assumed to be in ascending order by default. The following SELECT, which uses the ASC keyword, returns the same data as shown previously: SELECT FirstName, LastName FROM Customers ORDER BY FirstName ASC The keyword ASC is used to emphasize the fact that the sort is ascending, as opposed to descending. Sorting in Descending Order The DESC keyword sorts in an order opposite to ASC. Instead of ascending, the order in such a sort is descending. Sorting in Descending Order 49 For example: SELECT FirstName, LastName FROM Customers ORDER BY FirstName DESC retrieves: FirstName LastName William Smith Natalie Lopez Janet Smith Brenda Harper The first names are now in a Z to A order. Sorting by Multiple Columns We now return to the problem of what to do with the Smiths. If you want to sort by last name, but there are two people with the same last name, you need to add a secondary sort by first name, as follows: SELECT FirstName, LastName FROM Customers ORDER BY LastName, FirstName This brings back: FirstName LastName Brenda Harper Natalie Lopez Janet Smith William Smith Since you are specifying a second sort column, you can now be certain that Janet Smith will appear before William Smith. Note that the ORDER BY clause needs to list LastName before FirstName. The order of the columns is significant. Your Chapter 5 ■ Sorting Data50 . However, if the same list were sorted alphabetically, then you could quickly locate the desired customer. The idea of sorting data alphabetically applies to many situations, even when the data isn’t. row will come first. If the query is executed from within a software program, and no one ever sees the data at that point in time, then it really doesn’t matter. But if the data is to be immediately displayed. immediately displayed to a user, then the order of rows is often significant. A sort can be added easily to a SELECT statement by using an ORDER BY clause. 47 Here’s the general format for a SELECT