1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Urgente OpenEdge com Comando CASE do SQL

Discussão em 'Progress 4GL' iniciado por Sidnei Alves, Setembro 20, 2018.

  1. Sidnei Alves

    Sidnei Alves Sem Pontuação

    Prezados,

    Tenho um programa simples abaixo e estou tentando utilizar o comando CASE do SQL, no entanto, quando tento rodar o programa, aparece o erro:
    ** Nao entendi apos: "select". (247)
    ** Line 3. Invalid SQL statement. (945)

    Se retiro o bloco do CASE, funciona perfeitamente e gera o arquivo com as informaçoes.

    Alguém conseguiria me ajudar mostrando onde estou errando?

    Obrigado.

    Sidnei

    /********** Inicio do Programa com teste do CASE **********/
    OUTPUT TO c:\temp\APB.txt PORTRAIT .
    select estabelec.nome,
    tit_ap.cod_tit_ap,
    tit_ap.cod_parcela,
    tit_ap.dat_emis_docto,
    tit_ap.ind_origin_tit_ap,
    tit_ap.cdn_fornecedor,
    emitente.nome-emit,
    item.it-codigo,
    item.desc-item,
    /**/
    CASE
    WHEN item.ge-codigo = 10 OR
    item.ge-codigo = 20 OR
    item.ge-codigo = 30 OR
    item.ge-codigo = 40 OR
    item.ge-codigo = 50 OR
    item.ge-codigo = 90 THEN 'DIRECT' ELSE 'INDIRECT'
    END po_type,
    /**/
    tit_ap.val_origin_tit_ap,
    tit_ap.cod_indic_econ
    from tit_ap
    left OUTER join estabelec
    on estabelec.cod-estabel = tit_ap.cod_estab
    left OUTER join emitente
    on emitente.cod-emitente = tit_ap.cdn_fornecedor
    left OUTER join item-doc-est
    on item-doc-est.serie-docto = tit_ap.cod_ser_docto
    and item-doc-est.nro-docto = tit_ap.cod_tit_ap
    and item-doc-est.cod-emitente = tit_ap.cdn_fornecedor
    left OUTER join item
    on item.it-codigo = item-doc-est.it-codigo
    where tit_ap.cod_estab >= '' and
    tit_ap.dat_emis_docto >= 09/01/2018
    with width 600.
    OUTPUT CLOSE.
    /********** Fim do Programa com teste do CASE **********/
  2. Sidnei Alves

    Sidnei Alves Sem Pontuação

    Corrigi as linhas com WHEN, mas o erro continua:

    /**/
    CASE
    WHEN item.ge-codigo = 10 OR
    WHEN item.ge-codigo = 20 OR
    WHEN item.ge-codigo = 30 OR
    WHEN item.ge-codigo = 40 OR
    WHEN item.ge-codigo = 50 OR
    WHEN item.ge-codigo = 90 THEN 'DIRECT' ELSE 'INDIRECT'
    END PO_TYPE,
    /**/
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    porque vc não usa comandos progress mesmo, resolve isso ai com for each, o progress é bem limitado para comandos SQL.
  4. Sidnei Alves

    Sidnei Alves Sem Pontuação

    É, na verdade eu uso, e tenho tudo isso em progress...

    O problema é que preciso traduzir isso tudo para uma query sql para análise do que eu fiz lá na Austrália, e eles não conhecem uma virgula de progress, inclusive acessam nossos bancos daqui a partir do Tableu utilizado lá!
  5. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    tenta remover esse po_type na frente do END do CASE e os /**/ também

Compartilhe esta Página