我正在生成一个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'的所有结果,并按日期排序描述 *首先排序所有其他结果按psc_alt_code降序* 排序所以我认为这样的事情会足够了:
ORDER BY (wi_urgent = 'Y') DESC, psc_alt_code ASC
尝试运行该查询时出现SqlClient.SqlException: Incorrect syntax near '='
错误。请注意,如果这有所不同,我正在查询SQL视图?
答案 0 :(得分:2)
我认为你不能在ORDER BY中做wi_urgent = 'Y'
。
由于您正在使用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
答案 1 :(得分:2)
您可以按顺序使用案例表达式
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