Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用select内部的select将查询转换为Oracle_Sql_Oracle - Fatal编程技术网

Sql 如何使用select内部的select将查询转换为Oracle

Sql 如何使用select内部的select将查询转换为Oracle,sql,oracle,Sql,Oracle,我需要将此查询从MsSql转换为Oracle语法: SELECT CATEGORY_ID ,CASE WHEN EXISTS ( SELECT * FROM DA_CATEGORY C WHERE E.CATEGORY_ID = C.CATEGORY_ID ) THEN 'Exist' ELSE 'Not

我需要将此查询从MsSql转换为Oracle语法:

SELECT CATEGORY_ID
    ,CASE 
        WHEN EXISTS (
                SELECT *
                FROM DA_CATEGORY C
                WHERE E.CATEGORY_ID = C.CATEGORY_ID
                )
            THEN 'Exist'
        ELSE 'Not Exist'
        END AS [Status]
FROM (
    VALUES ('CG0')
        ,('CG10')
        ,('CG100')
        ,('CG1000')
        ,('CG10000')
        ,('CG1100')
        ,('CG1200')
        ,('CG2600')
        ,('CG2700')
        ,('CG2800')
        ,('CG300')
        ,('CG3000')
        ,('CG500')
        ,('CG600')
        ,('CG6000')
        ,('CG700')
        ,('CG8')
        ,('CG800')
        ,('CG900')
        ,('CG1300')
        ,('CG1400')
        ,('CG1500')
        ,('CG1600')
        ,('CG1700')
        ,('CG1800')
        ,('CG1900')
        ,('CG2100')
        ,('CG2200')
        ,('CG2300')
        ,('CG2400')
        ,('CG2500')
        ,('CG2900')
        ,('CG20')
        ,('CG30')
        ,('CG40')
        ,('CG50')
        ,('CG60')
        ,('CG70')
        ,('CG80')
        ,('CG90')
        ,('CG11')
        ,('CG12')
        ,('CG13')
        ,('CG14')
        ,('CG15')
        ,('CG16')
        ,('CG17')
    ) E(CATEGORY_ID)

如何做到这一点?

Oracle不支持
值。一种方法是使用
SELECT FROM DUAL
构造值:

SELECT CATEGORY_ID,
       (CASE WHEN EXISTS (SELECT 1 FROM DA_CATEGORY C WHERE E.CATEGORY_ID = C.CATEGORY_ID) THEN 'Exist' ELSE 'Not Exist'
        END) AS Status
FROM (SELECT 'CG0' as CATEGORY_ID FROM DUAL UNION ALL
      SELECT 'CG10' FROM DUAL UNION ALL
      . . . 
      SELECT 'CG17' FROM DUAL
     ) E;
如果表中已有这些值,那么只在查询中引用这些值就更简单了


是一个dbfiddle。

您的查询无法编译。请更新您的答案并填写完整的工作查询?@talangle。您必须填写
代码。