sql - ORACLE where 子句的案例

标签 sql oracle case

SELECT *
FROM (
                SELECT P.PC_ID, PC.PC, P.BLOK_ID, B.BLOK, B.ID_MATERIAL, M.MATERIAL, M.NO_MATERIAL, P.START_DTTM, TO_CHAR(P.START_DTTM,'yyyy-mm-dd') DATE_PERENCANAAN
                FROM UTSG_PERENCANAAN P
                INNER JOIN UTSG_PC PC
                        ON P.PC_ID = PC.ID_PC
                INNER JOIN UTSG_BLOK B
                        ON P.BLOK_ID = B.ID_BLOK
                LEFT JOIN UTSG_MATERIAL M
                        ON B.ID_MATERIAL = M.ID_MATERIAL
                WHERE P.NO_LAMBUNG = '341'
                                AND P.LOKASI_ID = '2'
                                AND P.START_DTTM < TO_DATE('2019-01-09 23:40:52', 'yyyy-mm-dd hh24:mi:ss')
                ORDER BY P.START_DTTM DESC
)
WHERE 
    CASE
        WHEN BLOK = 'DD11'
            THEN ROWNUM <= 1
        ELSE
            THEN ROWNUM <= 2
    END

我有这样的查询,在 where 子句中总是显示的情况下

error ORA-00905: missing keyword

最佳答案

case 语句中不能有比较运算符。相反,您的 where 子句应该类似于:

WHERE 
    rownum <= CASE WHEN BLOK = 'DD11' THEN 1
                   ELSE 2
              END

关于sql - ORACLE where 子句的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54105779/

相关文章:

mysql - 重复 key 更新

mysql - 用于显示记录的 SQL 查询

java - Oracle 数组和 Hibernate

mysql - 使用 APEX 创建 CRUD 应用程序

c - 在 C 中如何使用大小写将枚举转换为字符串?

sql - 在子句中包含许多值 - SQL

c# - 在将其添加到 DataTable 之前删除重复的列名

SQL 查找列中不同值的数量

sql - Oracle错误 "inconsistent datatypes: expected CHAR got LONG"

sql - 有没有办法简化这个 TSQL Case 语句?