Asp.net SQL选择值为“Y”且按日期降序的字段,然后选择所有其他字段并按另一个字段升序

Asp.net SQL选择值为“Y”且按日期降序的字段,然后选择所有其他字段并按另一个字段升序,asp.net,sql,sql-order-by,Asp.net,Sql,Sql Order By,我正在生成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** 我正在获取SqlClient.SqlException:尝试运行该查询时出现“=”

我正在生成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**
我正在获取SqlClient.SqlException:尝试运行该查询时出现“=”错误附近的语法错误。请注意,我正在查询一个SQL视图,如果这有什么不同的话?

我认为您不能按顺序执行wi_紧急='Y'

由于您正在使用wi_紧急查找所有结果,请尝试将其添加到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
我不认为你能在一个订单上用wi_-emergency='Y'完成

由于您正在使用wi_紧急查找所有结果,请尝试将其添加到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

可以按顺序使用大小写表达式

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 

可以按顺序使用大小写表达式

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 


WHERE wi_emergency='Y'和…抱歉我已经更新了问题。我遗漏了一个非常重要的因素!您是否可以选择为此运行两个单独的查询?否您可以使用大小写表达式进行排序。检查我的回答,其中wi_紧急='Y'和…抱歉我已经更新了问题。我遗漏了一个非常重要的因素!您是否可以选择为此运行两个单独的查询?否您可以使用大小写表达式进行排序。检查我的回答你是正确的,但我已更新了问题,因为我忘记了以下事实:我想按日期顺序列出顶部带有“Y”的结果,然后按psc_alt_代码顺序列出下面所有其他结果。道歉!没问题:我正在想办法满足您的需要,但我不是DBA,这可能超出了我的能力。您是对的,但我已更新了问题,因为我忘记了一个事实,即我想按日期排序,在顶部列出“Y”,然后按psc_alt_代码排序下面的所有其他结果。道歉!没问题:我正在想一种方法来满足您的需求,但我不是DBA,这可能超出了我的能力。有趣的方法。我很难弄清楚这个案例在结果集上到底做了什么。当wi_emergent='Y'时,是否告诉SQL Server按第一列排序,否则按第二列排序?大小写表达式返回的是一个伪列,用于排序。如果wi_emergent='Y',则伪列数据为0,其余值为1。服务器排序最初在伪列0/1值上,然后在psc_alt_code columnCool上进行排序。谢谢你的解释——学习新东西总是好的有趣的方法。我很难弄清楚这个案例在结果集上到底做了什么。当wi_emergent='Y'时,是否告诉SQL Server按第一列排序,否则按第二列排序?大小写表达式返回的是一个伪列,用于排序。如果wi_emergent='Y',则伪列数据为0,其余值为1。服务器排序最初在伪列0/1值上,然后在psc_alt_code columnCool上进行排序。谢谢你的解释——学习新东西总是好的