Is it possible to select a specific ORDER BY in SQL Server 2008?

sql-order-by, sql-server-2008

Solution

Hmm.. that's nasty, the days are stored as verbatim 'Monday', 'Tuesday', etc?

Anyway, just do this:

SELECT * 
FROM Requirements
ORDER BY 
     CASE Day 
     WHEN 'Monday' THEN 1
     WHEN 'Tuesday' THEN 2
     WHEN 'Wednesday' THEN 3
     WHEN 'Thursday' THEN 4
     WHEN 'Friday' THEN 5
     WHEN 'Saturday' THEN 6
     WHEN 'Sunday' THEN 7
     END

Problem

I have a table that holds days and times, the day column, can have any of the seven days entered into it, and they are set to data type `varchar`. As this table holds booking times for a client, I want to select all days from the table where the id matches, and I want to sort by day Monday-Sunday. I was hoping that I could add something to this query to manually select the order the results come back like so: ``` select * from requirements where Family_ID = 1 ORDER BY Day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ``` This of course doesn't work but I just wanted to show what I am trying to achieve. The client doesn't necessarily require help every day, I just want to show the days they are booked in. Sorting by DESC and ASC doesn't help with days of the week, I would appreciate any tips on how to achieve this. Thanks.

Original source