Home > SQL Server Error Messages > Msg 145 - ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
|
SQL Server Error Messages - Msg 145 - ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
|
|
Error Message
Server: Msg 145, Level 15, State 1, Line 1
ORDER BY items must appear in the select list if
SELECT DISTINCT is specified.
Causes:
As the message describes, this message occurs when you are doing a SELECT DISTINCT combined with the ORDER BY clause and one of the columns in the ORDER BY is not specified as one of the columns in the SELECT DISTINCT.
|
To illustrate, using the [dbo].[Orders] table in the Northwind database, suppose you want to get a list of unique Customer IDs that had orders ordered by the
date of the order with the newest orders first, the following SELECT statement will generate the error above:
SELECT DISTINCT [CustomerID]
FROM [dbo].[Orders]
ORDER BY [OrderDate] DESC
Server: Msg 145, Level 15, State 1, Line 1
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Solution / Work Around:
To avoid encountering this error, instead of using the DISTINCT clause, you can use the GROUP BY clause to get the unique records from a table. The query above can be re-written as follows:
SELECT [CustomerID]
FROM [dbo].[Orders]
GROUP BY [CustomerID]
ORDER BY MAX([OrderDate]) DESC
This query will return the unique Customer IDs ordered by the newest orders in descending order.
|
Related Articles :
|
|