sql - SQL:ORDER BY 语句中的嵌套大小写
问题描述
我正在尝试将 case 语句嵌套到查询的 ORDER BY 部分中的另一个中。这是我得到的:
ORDER BY
CASE WHEN v.Interior = 'MEL (White - 113)' AND v.Interior = 'MEL 290 (Maple)'
THEN v.[Finish] ELSE
( CASE
WHEN v.[Item] like 'Adjustable%' THEN v.[Item]
WHEN v.[Item] Like 'Fixed%' THEN v.[Item]
WHEN v.[Item] like '%Divider%' THEN v.[Item]
END DESC)
,v.[Finish], v.[W mm] DESC
END
但是这样做会给我一个错误。我也试过:
ORDER BY
CASE WHEN v.Interior = 'MEL (White - 113)' AND v.Interior = 'MEL 290 (Maple)'
THEN v.[Finish] END
,CASE
WHEN v.[Item] like 'Adjustable%' THEN v.[Item]
WHEN v.[Item] Like 'Fixed%' THEN v.[Item]
WHEN v.[Item] like '%Divider%' THEN v.[Item]
END DESC
,v.[Finish], v.[W mm] DESC
但这并没有按照我需要的方式排序结果。
这是修复错误后得到的结果:
但是上面的结果不服从第一个case语句。我也不能按 LEVEL 排序,因为当我将结果导出到另一个程序时会导致问题。
有人知道如何解决这个问题吗?
提前感谢您的帮助!
解决方案
在这两个查询之间,您修复了一个问题,但又创建了另一个问题。最好一次只改变一件事。
尝试这个:
ORDER BY
CASE
WHEN v.Interior = 'MEL (White - 113)' AND v.Interior = 'MEL 290 (Maple)'
THEN v.[Finish]
ELSE CASE
WHEN v.[Item] like 'Adjustable%' THEN v.[Item]
WHEN v.[Item] Like 'Fixed%' THEN v.[Item]
WHEN v.[Item] like '%Divider%' THEN v.[Item]
ELSE NULL --need to have some default if all cases are false.
END DESC
END
,v.[Finish], v.[W mm] DESC
这至少应该不会出错,但是从您的问题中的尝试中不清楚它是否符合您的要求。
推荐阅读
- excel - Excel函数根据值返回日期
- python-3.x - 如何在 Windows 10 上运行 pyautogui 脚本时使用计算机?
- swift - 自定义中缀运算符和选项
- java - 创建 2 个线程,每个线程运行不同的任务
- postgresql - AWS EC2 Postgres 身份验证失败
- android - 使用 Glide 4.11 “尝试使用回收的位图”时崩溃,转换会导致这种情况吗?
- java - 如何获得“减少”以将流中的值彼此分开?
- tensorflow - “LayerNormLSTMCell”对象在 tf 2.2 中没有属性“zero_state”
- c++ - 在这种情况下如何存储数组的总和
- javascript - React 中未定义的属性“映射”