sql - 在 oracle 中列出的硬编码项目
问题描述
我有以下查询,它以我想要的特定顺序列出项目。现在我想硬编码一个要与其他值一起显示的值,但这个值在我的表中不存在,我不想添加它。
这是查询:
select item_name from item_table
order by
case
when item_name = 'New' then 1
when item_name = 'In Progress' then 2
when item_name = 'Passed' then 3
when item_name = 'Exempt' then 4
else 5
end, item_name;
我需要的预期结果
New
In Progress
Passed
Expired
Exempt
我得到的实际结果:
New
In Progress
Passed
Exempt
有没有办法Expired
在我运行查询时对要显示的其他项目进行硬编码?
解决方案
使用表 ddl 和 insert 语句。
CREATE TABLE ITEM_TABLE
( ITEM_NAME VARCHAR2(20 CHAR)
) ;
Insert into ITEM_TABLE (ITEM_NAME) values ('NEW');
Insert into ITEM_TABLE (ITEM_NAME) values ('In Progress');
Insert into ITEM_TABLE (ITEM_NAME) values ('passed');
Insert into ITEM_TABLE (ITEM_NAME) values ('Exempt');
如果我理解正确的话。这应该这样做。
SELECT
*
FROM
(
SELECT
item_name
FROM
item_table
UNION
SELECT
'hard_coded_Value' item_name
FROM
item_table
)
ORDER BY
CASE
WHEN item_name = 'New' THEN
1
WHEN item_name = 'In Progress' THEN
2
WHEN item_name = 'Passed' THEN
3
WHEN item_name = 'Exempt' THEN
4
WHEN ITEM_NAME = 'hard_coded_Value' then
5
ELSE
6
END,
item_name;
我无法真正验证查询,因为您没有提供一些 ddl 进行测试,但这通常是我解决此类问题的方式。
推荐阅读
- php - php+symfony - phpunit 测试 - 无法实例化接口错误
- python - 当代码在我的 python idle 中运行时,Google Kickstart 显示 RE
- augmented-reality - 有没有办法在 RealityKit 中为同一场景使用多个摄像头(.ar 和 .nonAR)?
- sql - 它给了我错误,缺少右括号
- java - 为什么HashMap会遍历linkedList中的所有节点而不仅仅是resize()中的head?
- kubernetes - Azure Kubernetes - 无法为 MongoDb 附加或装载卷
- php - 为什么在 Laravel 中使用 Sortable 包时会出现“尝试获取非对象的属性”错误?
- javascript - 如何从谷歌表中的导入范围设置日期 onEdit()
- haskell - 为什么 Hackage 上对的 Monad 实例没有返回实现?
- javascript - 如何在棋盘的方格上画圆圈以使其看起来像真正的棋盘?