【问题标题】:hardcode item to list in oracle在 oracle 中列出的硬编码项目
【发布时间】:2023-04-04 23:14:01
【问题描述】:

我有以下查询,它按我想要的特定顺序列出项目。现在我想硬编码一个要与其他值一起显示的值,但这个值在我的表中不存在,我不想添加它。

这是查询:

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 以及我运行查询时要显示的其他项目?

【问题讨论】:

    标签: sql database oracle case


    【解决方案1】:

    Table ddl 使用和插入语句。

      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 进行测试,但这通常是我解决此类问题的方法。

    【讨论】:

    • 您好,感谢您的意见。第一个查询添加了一个值为Expired 的新列,但我需要添加一个新行而不是一个新列。您能否详细说明第二个查询?因为运行它会返回以下错误ORA-01785: ORDER BY item must be the number of a SELECT-list expression
    • 我更新了我的答案。它现在应该适合你。我只需将 2 个数据集合并在一起,最后按顺序进行排序。有不明白的地方告诉我
    猜你喜欢
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多