2016-05-19 6 views
0

このクエリを使用すると、私は狂ったようになります。クレイジーな理由により、クエリが実行され、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" 

私はここで途方に暮れて全くだ

は、ここでのクエリです。あるツールでどのようにクエリを解析できますか?私はネットの周りを検索しようとしましたが、無駄です。 ありがとうございます!

+0

"動作しません" ** HOW **? –

+0

申し訳ありませんが、ここで更新されただけで、解析エラーが発生します。まったく同じ質問、コピー、貼り付けがplsql開発者 –

+0

@ RaoniMedinilha Hm で動作するので、私は最も驚いていますが、すべての非ASCII文字をASCII文字に変更できますか?文字エンコーディングの設定を除外するだけです。 – micklesh

答えて

2

それはラインであるかもしれない、

/

SQL Plusは、SQLクエリの終わりをマークするためにそれ自体で/を使用し、SQL Developerは、最も可能性の高い次の。しかし、前の空白は意味を変えるかもしれないので、これは問題ではないかもしれません。

この仮説をテストするには、/を前の行に移動します。

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) 

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) 

ことが問題となる場合は

に変更し、それ自体がライン上 /を残さないあなたのために働く何かに再フォーマットの問題です。

+0

分割シンボルとして何を使用しますか? –

+0

@RaoniMedinilha彼はちょうど裂け目のシンボルを – tbone

+0

の上の行に移動しました! oracleが区切り記号の代わりに別の記号を使用することはできませんでしたか?私がそれをしたら、クエリが正しく動作するようになりました。私はそのために仕事の一日を失ったとは信じられません ありがとうShannon! –

関連する問題