Sql 如何使用select内部的select将查询转换为Oracle
我需要将此查询从MsSql转换为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
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。您必须填写使用附加值编写>代码。