Erro em Consulta

(leandroauler) #1

Senhores,

Estou tentando fazer uma aplicação consulta com o seguinte sql:

SELECT
  VIAGEM.DATA_MOVIMENTO,
  VIAGEM.CODIGO_LINHA_DETALHE,
  TURNO.SEQUENCIAL_TURNO,
  TRANS.DATA_TRANSACAO,
  TRANS.NUM_ONIBUS,
  TRANS.MOT_MATRICULA,
  TRANS.COB_MATRICULA,
  TRANS.TIPO_DEBITO,
  CASE WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 3) THEN "BU_ESTADUAL"
       WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 4) THEN "BU_CARIOCA"
       WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 5) THEN "BU_SUPERVIA"
       ELSE APLIC.DESCRICAO
  END AS DESCRICAO,
  COUNT(*) AS QTD_PASSAGEIROS,
  SUM(COALESCE(VALOR_DEBITADO,0)) AS VALOR_TOTAL,
  SUM(COALESCE(DIFERENCA_VALOR_DEBITADO,0)) AS DIFERENCA_VALOR_TOTAL,
  APLIC.TIPO  
  FROM TRANSACAO_USO_CARTAO TRANS
       INNER JOIN APLICACAO APLIC
         ON TRANS.CODIGO_EMISSOR_APLICACAO = APLIC.CODIGO_EMISSOR AND
            TRANS.CODIGO_APLICACAO = APLIC.CODIGO_APLICACAO
       INNER JOIN MOVIMENTO_VIAGEM VIAGEM
         ON VIAGEM.EMPRESA_ID = TRANS.MOV_VIAGEM_EMPRESA_ID AND
            VIAGEM.SERVIDOR_ID = TRANS.MOV_VIAGEM_SERVIDOR_ID AND
            VIAGEM.ID = TRANS.MOV_VIAGEM_ID
	   INNER JOIN MOVIMENTO_TURNO TURNO
         ON TURNO.EMPRESA_ID = TRANS.MOV_TURNO_EMPRESA_ID AND
            TURNO.SERVIDOR_ID = TRANS.MOV_TURNO_SERVIDOR_ID AND
            TURNO.ID = TRANS.MOV_TURNO_ID		
  WHERE VIAGEM.DATA_MOVIMENTO = '2011-07-25'
    AND TRANS.STATUS IN (0,2) 
    AND TRANS.NUM_ONIBUS = 0000048009
  GROUP BY TRANS.NUM_ONIBUS,
           TURNO.SEQUENCIAL_TURNO,
           CASE WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 3) THEN 'BU_ESTADUAL'
                WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 4) THEN 'BU_CARIOCA'
                WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 5) THEN 'BU_SUPERVIA'
                ELSE APLIC.DESCRICAO
           END
  ORDER BY TRANS.NUM_ONIBUS,
           TURNO.SEQUENCIAL_TURNO,
           CASE WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 3) THEN 'BU_ESTADUAL'
                WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 4) THEN 'BU_CARIOCA'
                WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 5) THEN 'BU_SUPERVIA'
                ELSE APLIC.DESCRICAO
           END

Porém está me retornando o seguinte erro:

Parse error: syntax error, unexpected T_STRING, expecting ']' in C:\Program Files (x86)\NetMake\v5\wwwroot\scriptcase\app\Alpha\grid_resumo_utilizacao\grid_resumo_utilizacao_grid.class.php on line 318

Alguém já passou pelo mesmo problema?

(wanderlanlima) #2

Acho que esse. erro não é no select e sim em outro lugar da aplicação !
Mesmo assim no seu select falta colocar no group by todos os campos do select menos os mostrados abaixo:
COUNT(*) AS QTD_PASSAGEIROS,
SUM(COALESCE(VALOR_DEBITADO,0)) AS VALOR_TOTAL,
SUM(COALESCE(DIFERENCA_VALOR_DEBITADO,0)) AS DIFERENCA_VALOR_TOTAL

(leandroauler) #3

O problema está no scriptcase, pois no QueryBuilder funciona normalmente…

(Cleyton Euler) #4

Este é um erro de caractere esperado não encontrado. O que tem na linha 318 do código fonte?

(Arquimedes) #5

aparece a mensagem expecting ‘]’,, não esta faltando fecha esse cochete, em algum lugar?

(leandroauler) #6

Galera,

retirei:

           CASE WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 3) THEN 'BU_ESTADUAL'
                WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 4) THEN 'BU_CARIOCA'
                WHEN (APLIC.TIPO = 2 AND TRANS.TIPO_DEBITO = 5) THEN 'BU_SUPERVIA'
                ELSE APLIC.DESCRICAO
           END

Dor ORDER BY e funcionou normalmente…

(Haroldo) #7

se criar uma view em cima do select original e rodar a consulta em cima da view não funciona?

(leandroauler) #8

Haroldo,

Vou testar e te digo se deu certo.