SQL Выберите поля со значением «Y» и порядком по дате по убыванию, затем выберите все остальные и упорядочите по возрастанию другого поля - PullRequest
0 голосов
/ 04 августа 2011

Я генерирую SQL-запрос:

SELECT * FROM ToDoList 
WHERE ws_status <> 'Completed' 
AND (user_id= 'TESTUSR' OR ww_cover='TESTUSR' 
OR (ws_status = 'Orphan' AND wwt_workgroupid IN (108))) 
**ORDER BY psc_alt_code ASC**

И мне нужно перечислить все результаты с wi_urgent, установленным в 'Y', и упорядочить их по дате Desc *, а затем перечислить все остальные результатыупорядоченный по убыванию psc_alt_code *, поэтому я подумал, что этого будет достаточно:

ORDER BY (wi_urgent = 'Y') DESC, psc_alt_code ASC

При попытке выполнить этот запрос я получаю ошибку SqlClient.SqlException: Incorrect syntax near '='.Обратите внимание, что я запрашиваю SQL View, если это имеет значение?

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Вы можете использовать регистр в порядке:

SELECT * FROM ToDoList 
WHERE ws_status <> 'Completed' 
AND (user_id= 'TESTUSR' OR ww_cover='TESTUSR' 
OR (ws_status = 'Orphan' AND wwt_workgroupid IN (108))) 
ORDER BY CASE WHEN wi_urgent = 'Y' THEN 0 ELSE 1 END ASC
,psc_alt_code 
2 голосов
/ 04 августа 2011

Я не думаю, что вы можете сделать wi_urgent = 'Y' в ORDER BY.

Поскольку вы ищете все результаты с помощью wi_urgent, попробуйте добавить его в предложение WHERE:

SELECT * FROM ToDoList 
WHERE ws_status <> 'Completed' 
      AND (user_id= 'TESTUSR' OR ww_cover='TESTUSR' 
           OR (ws_status = 'Orphan' AND wwt_workgroupid IN (108)))
      AND wi_urgent = 'Y'
ORDER BY wi_urgent DESC,
         psc_alt_code ASC
...