sql-server - MSSQL 在 ORDER BY 列表的位置 1 中遇到常量表达式
问题描述
问题:
这是一个查询,应该对表进行排序,如果“归档”列中的至少一个值不为空,它可以正常工作,但在我的情况下,归档列的所有值都可以为空是可能且有效的。
当至少一个值不为空时,则应对其进行排序。
样本1(作品):
id|Archived
0 |NULL
1 |NULL
2 |0
3 |1
Sample2(不工作,但可能且有效的方案):
id|Archived
0 |NULL
1 |NULL
2 |NULL
3 |NULL
查询示例:
SELECT ... FROM Table1
ORDER BY
CASE archived WHEN NULL THEN 1 ELSE 0 END DESC,
CASE id WHEN NULL THEN 0 ELSE 1 END DESC
如何解决此类问题?
解决方案
您不能CASE
在ORDER BY
. 相反,您可以这样做:
SELECT ... FROM Table1
ORDER BY
CASE WHEN archived IS NULL THEN 1 ELSE 0 END DESC,
CASE WHEN id IS NULL THEN 0 ELSE 1 END DESC
推荐阅读
- slack - Slack Bolt 应用程序:选项正文视图状态不会像操作正文视图状态那样更新
- c# - 将新项目添加到音量横幅弹出窗口
- node.js - 如何使用 Node/Expressjs 为 swagger-ui 配置登录表单
- java - 如何在浏览器中向公众隐藏 Spring Boot“GET”API 请求?
- javascript - 如何获取变量的值以更改 reactJS 中 body/root 元素的 css?
- python - tkiner 输出不在同一个弹出窗口中
- java - 运行maven测试时一起禁用spring boot
- java - Redis Hget键值是否将哈希内容加载到主内存中
- git - GitHub 桌面授权失败
- azure - 如何将 Azure 应用配置与 .Net Framework 4.7.1 MVC 应用一起使用