读书人

在应使用条件的上下文(在 #039;ORDER#039; 附近

发布时间: 2012-03-29 12:53:12 作者: rapoo

在应使用条件的上下文(在 'ORDER' 附近)中指定了非布尔类型的表达式。
[code=SQL][/code]SELECT E_Title,E_ID,E_SID,E_Progress ,
(CASE WHEN E_Progress<>1 THEN S_Name END)
FROM Essay,Students WHERE E_TID=1
and (CASE WHEN E_Progress<>1 THEN 'E_SID=S_ID'
END) ORDER by E_ID desc
[color=#FFFFFF][/color]
消息 4145,级别 15,状态 1,第 5 行
在应使用条件的上下文(在 'ORDER' 附近)中指定了非布尔类型的表达式。
我用数据库执行上面代码的时候出现错误。请问是怎么回事啊?


[解决办法]
SELECT E_Title,E_ID,E_SID,E_Progress ,
(CASE WHEN E_Progress<>1 THEN S_Name END)
FROM Essay,Students WHERE E_TID=1
and (CASE WHEN E_Progress<>1 THEN 'E_SID=S_ID'
END) ORDER by E_ID desc

貌似错在红色地方的,自己调试一下
[解决办法]
SELECT E_Title,E_ID,E_SID,E_Progress ,
(CASE WHEN E_Progress<>1 THEN S_Name END)
FROM Essay,Students WHERE E_TID=1
and (CASE WHEN E_Progress<>1 THEN 'E_SID=S_ID'END) = 'xx'
ORDER by E_ID desc


SELECT E_Title,E_ID,E_SID,E_Progress ,
(CASE WHEN E_Progress<>1 THEN S_Name END)
FROM Essay,Students WHERE E_TID=1
and (CASE WHEN E_Progress<>1 THEN 'E_SID=S_ID'END) <> 'xx'
ORDER by E_ID desc
[解决办法]
要用case when也应该是这样

SQL code
and E_SID = (CASE WHEN E_Progress<>1 THEN S_ID else E_SID end)
[解决办法]
SQL code
--这种就应该不报错了SELECT E_Title,E_ID,E_SID,E_Progress ,(CASE WHEN E_Progress<>1 THEN S_Name END)  FROM Essay,Students WHERE E_TID=1  --and (CASE WHEN E_Progress<>1 THEN 'E_SID=S_ID' END) 这个不是一个条件,这是个值ORDER by E_ID desc
[解决办法]
SQL code
SELECT E_Title,E_ID,E_SID,E_Progress ,(CASE WHEN E_Progress<>1 THEN S_Name END)  S_Name FROM Essay,Students WHERE E_TID=1  and E_SID=S_IDunionSELECT E_Title,E_ID,E_SID,E_Progress ,nullFROM Essay,Students WHERE E_TID=1  and E_SID<>S_ID ORDER by E_ID desc 

读书人网 >SQL Server

热点推荐