Oracle 查询在plsqldeveloper中工作,但不';SQL开发人员中的t
所以,我有一个让我发疯的疑问。出于某些疯狂的原因,查询在PLSQL Developer上运行并带来所需的输出,但在SQL Developer上却没有!据我所知,完全相同的查询应该同时适用于这两种情况,而不仅仅是其中一种。我的团队中并不是每个人都有PLSQL开发,所以它必须同时在这两个方面工作。此查询还显示了我的BI应用程序上的不同行为。以前有人见过这种疯狂的行为吗 问题是:Oracle 查询在plsqldeveloper中工作,但不';SQL开发人员中的t,oracle,oracle-sqldeveloper,plsqldeveloper,Oracle,Oracle Sqldeveloper,Plsqldeveloper,所以,我有一个让我发疯的疑问。出于某些疯狂的原因,查询在PLSQL Developer上运行并带来所需的输出,但在SQL Developer上却没有!据我所知,完全相同的查询应该同时适用于这两种情况,而不仅仅是其中一种。我的团队中并不是每个人都有PLSQL开发,所以它必须同时在这两个方面工作。此查询还显示了我的BI应用程序上的不同行为。以前有人见过这种疯狂的行为吗 问题是: with t1 as ( SELECT case when CLG_STATUS.NM_STATUS in ('1
with t1 as (
SELECT
case when CLG_STATUS.NM_STATUS in ('1 - ATIVO','5 - BLOQUEADO','7 - AGUARDANDO AUTENTICAÇÃO') then 'LG Club Member'
else 'Non Member'
end membership,
Round(
Round(SUM(NVL(CASE WHEN CLG_VENDA.CD_TP_VENDA = 'D' THEN -1*CLG_VENDA.QTD_VENDA ELSE CLG_VENDA.QTD_VENDA END,0)), 1)
/
Count(distinct CLG_PARTICIPANTE.ID)
, 1) as average_sales ,
Round(
SUM(NVL(CASE WHEN CLG_VENDA.CD_TP_VENDA = 'D' THEN -1*CLG_VENDA.QTD_VENDA ELSE CLG_VENDA.QTD_VENDA END,0))
, 1) as sellout,
Count(distinct CLG_PARTICIPANTE.ID)
as "qty members"
FROM
CLG_VENDA_PONTO,
CLG_PARTICIPANTE,
CLG_STATUS,
CLG_VENDA,
CLG_CARGO CLG_CARGO_VENDA,
CLG_CANAL CLG_CANAL_VENDA,
CLG_REDE CLG_REDE_VENDA,
CLG_PRODUTO,
CLG_TP_MOVIMENTO,
DIM_PERIOD_DAY PERIOD_VENDA_DATA,
CLG_LOJA CLG_LOJA_VENDA
WHERE
( CLG_VENDA_PONTO.ID_VENDA=CLG_VENDA.ID(+) )
AND ( CLG_VENDA_PONTO.ID_PROD=CLG_PRODUTO.ID(+) )
AND ( CLG_VENDA_PONTO.ID_CARGO=CLG_CARGO_VENDA.ID )
AND ( CLG_LOJA_VENDA.ID=CLG_VENDA_PONTO.ID_LOJA )
AND ( CLG_REDE_VENDA.ID=CLG_LOJA_VENDA.ID_REDE )
AND ( CLG_CANAL_VENDA.ID=CLG_VENDA_PONTO.ID_CANAL )
AND ( CLG_PARTICIPANTE.ID_LOJA=CLG_LOJA_VENDA.ID )
AND ( CLG_LOJA_VENDA.ID_REDE=CLG_REDE_VENDA.ID )
AND ( CLG_PARTICIPANTE.ID=CLG_VENDA_PONTO.ID_PARTCPTE )
AND ( CLG_VENDA_PONTO.ID_TP_MOVIMENTO=CLG_TP_MOVIMENTO.ID )
AND ( CLG_STATUS.ID=CLG_PARTICIPANTE.ID_STATUS )
AND ( CLG_VENDA_PONTO.DATA_VENDA=PERIOD_VENDA_DATA.YYYYMMDD )
AND ( CLG_CARGO_VENDA.NM_CARGO = '5 - VENDEDOR' OR CLG_VENDA.ID_CARGO = 8 )
AND
(
CLG_PRODUTO.NM_PRODUTO NOT IN ( 'M4338 - FRETE','R39745 - FRETE SOBRE VENDAS' )
AND
CLG_TP_MOVIMENTO.NM_MOVIMENTO IN ( '1 - VENDA','3 - DEVOLUCAO' )
AND
CLG_REDE_VENDA.NM_REDE = '21540901 - RABELO'
AND
PERIOD_VENDA_DATA.YYYYMMDD_DATE BETWEEN to_date('01-01-2013', 'DD-MM-YYYY') AND to_date('31-12-2013', 'DD-MM-YYYY')
AND
CLG_CANAL_VENDA.NM_CANAL IN ('1 - VAREJO')
AND
CLG_PRODUTO.FG_MAPEADO IN ( 'SIM' )
)
GROUP BY
case when CLG_STATUS.NM_STATUS in ('1 - ATIVO','5 - BLOQUEADO','7 - AGUARDANDO AUTENTICAÇÃO') then 'LG Club Member'
else 'Non Member'
end
), t2 as (
SELECT
case when CLG_STATUS.NM_STATUS in ('1 - ATIVO','5 - BLOQUEADO','7 - AGUARDANDO AUTENTICAÇÃO') then 'LG Club Member'
else 'Non Member'
end membership,
Round(
Round(SUM(NVL(CASE WHEN CLG_VENDA.CD_TP_VENDA = 'D' THEN -1*CLG_VENDA.QTD_VENDA ELSE CLG_VENDA.QTD_VENDA END,0)), 1)
/
Count(distinct CLG_PARTICIPANTE.ID)
, 1) as average_sales ,
Round(
SUM(NVL(CASE WHEN CLG_VENDA.CD_TP_VENDA = 'D' THEN -1*CLG_VENDA.QTD_VENDA ELSE CLG_VENDA.QTD_VENDA END,0))
, 1) as sellout,
Count(distinct CLG_PARTICIPANTE.ID)
as "qty members"
FROM
CLG_VENDA_PONTO,
CLG_PARTICIPANTE,
CLG_STATUS,
CLG_VENDA,
CLG_CARGO CLG_CARGO_VENDA,
CLG_CANAL CLG_CANAL_VENDA,
CLG_REDE CLG_REDE_VENDA,
CLG_PRODUTO,
CLG_TP_MOVIMENTO,
DIM_PERIOD_DAY PERIOD_VENDA_DATA,
CLG_LOJA CLG_LOJA_VENDA
WHERE
( CLG_VENDA_PONTO.ID_VENDA=CLG_VENDA.ID(+) )
AND ( CLG_VENDA_PONTO.ID_PROD=CLG_PRODUTO.ID(+) )
AND ( CLG_VENDA_PONTO.ID_CARGO=CLG_CARGO_VENDA.ID )
AND ( CLG_LOJA_VENDA.ID=CLG_VENDA_PONTO.ID_LOJA )
AND ( CLG_REDE_VENDA.ID=CLG_LOJA_VENDA.ID_REDE )
AND ( CLG_CANAL_VENDA.ID=CLG_VENDA_PONTO.ID_CANAL )
AND ( CLG_PARTICIPANTE.ID_LOJA=CLG_LOJA_VENDA.ID )
AND ( CLG_LOJA_VENDA.ID_REDE=CLG_REDE_VENDA.ID )
AND ( CLG_PARTICIPANTE.ID=CLG_VENDA_PONTO.ID_PARTCPTE )
AND ( CLG_VENDA_PONTO.ID_TP_MOVIMENTO=CLG_TP_MOVIMENTO.ID )
AND ( CLG_STATUS.ID=CLG_PARTICIPANTE.ID_STATUS )
AND ( CLG_VENDA_PONTO.DATA_VENDA=PERIOD_VENDA_DATA.YYYYMMDD )
AND ( CLG_CARGO_VENDA.NM_CARGO = '5 - VENDEDOR' OR CLG_VENDA.ID_CARGO = 8 )
AND
(
CLG_PRODUTO.NM_PRODUTO NOT IN ( 'M4338 - FRETE','R39745 - FRETE SOBRE VENDAS' )
AND
CLG_TP_MOVIMENTO.NM_MOVIMENTO IN ( '1 - VENDA','3 - DEVOLUCAO' )
AND
CLG_REDE_VENDA.NM_REDE = '21540901 - RABELO'
AND
PERIOD_VENDA_DATA.YYYYMMDD_DATE BETWEEN add_months(to_date('01-01-2013', 'DD-MM-YYYY'), -12) AND add_months(to_date('31-12-2013', 'DD-MM-YYYY'), -12)
AND
CLG_CANAL_VENDA.NM_CANAL IN ('1 - VAREJO')
AND
CLG_PRODUTO.FG_MAPEADO IN ( 'SIM' )
)
GROUP BY
case when CLG_STATUS.NM_STATUS in ('1 - ATIVO','5 - BLOQUEADO','7 - AGUARDANDO AUTENTICAÇÃO') then 'LG Club Member'
else 'Non Member'
end
)
select t1.*, coalesce((t1.average_sales - t2.average_sales) / t2.average_sales, 0) as variation
from t1 join t2 on t1.membership = t2.membership
在SQL Developer上,它显示以下内容:
ORA-00928: missing SELECT keyword
00928. 00000 - "missing SELECT keyword"
我在这里完全不知所措。查询如何在一个工具而不是另一个工具上解析?我试着在网上搜索,但没有结果。
提前谢谢 可能是线路
/
SQL Plus单独使用/
来标记SQL查询的结束,SQL开发人员很可能也会这样做。但是,前面的空白可能会改变含义,因此这可能不是问题所在
要测试此假设,请将/
移动到前一行。改变
Round(SUM(NVL(CASE WHEN CLG_VENDA.CD_TP_VENDA = 'D' THEN -1*CLG_VENDA.QTD_VENDA ELSE CLG_VENDA.QTD_VENDA END,0)), 1)
/
Count(distinct CLG_PARTICIPANTE.ID)
到
如果这就是问题所在,那么这就是重新格式化为适合您的内容的问题,而不是将/
单独保留在一行上。可能是该行
/
SQL Plus单独使用/
来标记SQL查询的结束,SQL开发人员很可能也会这样做。但是,前面的空白可能会改变含义,因此这可能不是问题所在
要测试此假设,请将/
移动到前一行。改变
Round(SUM(NVL(CASE WHEN CLG_VENDA.CD_TP_VENDA = 'D' THEN -1*CLG_VENDA.QTD_VENDA ELSE CLG_VENDA.QTD_VENDA END,0)), 1)
/
Count(distinct CLG_PARTICIPANTE.ID)
到
如果这就是问题所在,那么问题在于重新格式化为对您有效的内容,而不是将
/
单独保留在一行上。“不起作用”如何处理?很抱歉,刚刚在此处更新,它给出了一个解析错误。这是最让我惊讶的,因为完全相同的查询,复制和粘贴,在plsql中工作developer@RaoniMedinilha嗯,你能试着把所有非ASCII字符改成ASCII对应字符吗?只是为了排除字符编码settings@micklesh我可以这样做,但我的大多数查询都涉及非ASCII字符,因为它是我语言的一部分,我以前从未遇到过这种问题,有些人对此表示怀疑。也许SQL Developer的版本太旧了。否则,将其重写为良好的旧子选择。“不起作用”如何?抱歉,刚刚在此处更新,它给出了一个解析错误。这是最让我惊讶的,因为完全相同的查询,复制和粘贴,在plsql中工作developer@RaoniMedinilha嗯,你能试着把所有非ASCII字符改成ASCII对应字符吗?只是为了排除字符编码settings@micklesh我可以这样做,但我的大多数查询都涉及非ASCII字符,因为它是我语言的一部分,我以前从未遇到过这种问题,有些人对此表示怀疑。也许SQL Developer的版本太旧了。否则,将其重写为旧的子选择。那么我将使用什么作为除法符号?@RaoniMedinilha为了皮特的缘故,他刚刚将除法符号移到了上面的一行!甲骨文不能用另一个符号代替除法符号吗?一旦我这样做了,查询就开始正常工作。我真不敢相信我因为这个损失了整整一天的工作,谢谢Shannon!那么我会用什么作为师的符号呢?@RaoniMedinilha为了皮特的缘故,他刚刚把师的符号移到了上面的一行!甲骨文不能用另一个符号代替除法符号吗?一旦我这样做了,查询就开始正常工作。我真不敢相信我因为这个损失了整整一天的工作,谢谢Shannon!