Итак, у меня есть этот запрос, который просто заставляет меня сходить с ума. По какой-то сумасшедшей причине запрос выполняется и выводит желаемый результат на PLSQL Developer, но на SQL Developer это не так! Насколько мне известно, точно такой же запрос должен работать как на том, так и на другом. Не у всех в моей команде есть PLSQL Dev, поэтому она должна работать над обоими. Этот запрос также показывает другое поведение в моем приложении BI. Кто-нибудь видел это сумасшедшее поведение раньше?Запрос работает в PLSQL Developer, но не в SQL Developer
Вот запрос:
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"
Я полностью в недоумении здесь. Как синтаксический запрос может обрабатываться одним инструментом, а не другим? Я пробовал искать по сети, но безрезультатно. Спасибо заранее!
«не работает» ** КАК **? –
Извините, просто обновленный здесь, он дает синтаксическую ошибку. Что меня больше всего поражает, так как тот же запрос, копировать и вставлять, работает в разработчике plsql –
@RaoniMedinilha Hm Вы могли бы попытаться изменить все символы, отличные от ASCII, на ASCII-копии? просто для того, чтобы исключить настройки кодировки символов – micklesh