让我们从免责声明开始。我有一堆SQL经验,但几乎没有Oracle经验。我正在处理一些继承的查询,并尝试将它们弯曲到我的意愿。
我写了以下查询。
set colsep ,
set echo off
set feedback off
set heading off
set headsep off
set linesize 1000
set pagesize 0
set tab off
set term off
set trimspool on
set verify off
DEFINE SEP = CHR(31)
SPOOL "&&1"
SELECT (RAG_SKUS_ST.SKU || '_' || RAG_SKUS_ST.STORE
|| &&SEP || RAG_SKUS_ST.UNIT_RETAIL
|| &&SEP || RAG_STYLE.RECOMMEND_RETAIL
|| &&SEP || ITEM_ZONE_PRICE.UNIT_RETAIL
|| &&SEP || RAG_SKUS_ST.STOCK_ON_HAND
|| &&SEP || (CASE WHEN RAG_SKUS_ST.CLEAR_IND = 'N' AND GROUPS.DIVISION = 90 THEN 'N' ELSE 'Y' END) IS_CLEARANCE
|| CHR(10))
FROM
RAG_SKUS_ST,
RAG_SKUS,
RAG_STYLE,
DEPS,
GROUPS,
ITEM_ZONE_PRICE
WHERE
RAG_SKUS_ST.SKU = RAG_SKUS.SKU AND
RAG_SKUS.STYLE = RAG_STYLE.STYLE AND
DEPS.DEPT = RAG_STYLE.DEPT AND
GROUPS.GROUP_NO = DEPS.GROUP_NO AND
ITEM_ZONE_PRICE.ITEM = RAG_SKUS.SKU AND
ITEM_ZONE_PRICE.BASE_RETAIL_IND = 'Y' AND
RAG_SKUS_ST.SKU LIKE '%&&3' AND
RAG_SKUS_ST.STORE = &&2;
SPOOL OFF
此查询在case语句的行上抛出错误 ORA-00907:缺少右括号。
从这里或那里读取Oracle似乎在遇到无法嵌套在其他代码中的代码时抛出该错误。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:4)
您似乎在IS_CLEARANCE
之后有一个别名(case
),但下一行添加了另一个连接。您只能为整个列提供别名。