GARANTIR DESCONTO

Fórum Ajuda com com UNION e o erro no ORDER BY #559313

15/07/2016

0

Em uma consulta com UNION estou tendo erro no ORDER BY:
can't format message 13:896 -- message system code -4.
Dynamic SQL Error.
SQL error code = -104.
Invalid command.
invalid ORDER BY clause.

Se eu comento a cláusula order by, não gera erro.
Segue a consulta:
SELECT 
    CAST('1' AS CHAR(1)) AS TIPO, 
    T.TITULO_ID, 
    TIT_TOTAL.* 
FROM 
    TITULO T 
LEFT JOIN 
    PC_TIT_TOTAL(T.TITULO_ID, 
                 :nat_valor_bruto, 
                 :nat_valor_desconto, 
                 :nat_valor_acrescimo, 
                 :nat_valor_baixado, 
                 :tipo_credito, 
                 :tipo_debito) TIT_TOTAL ON 
        (TIT_TOTAL.TITULO_ID = T.TITULO_ID) 
WHERE 
    (T.EMPRESAS_ID  = :EMPRESAS_ID) AND 
    (T.LAN_NAT_ID = :TIPO_ID_REC) 
UNION ALL 
SELECT 
    CAST('2' AS CHAR(1)) AS TIPO, 
    T.titulo_id, 
    TIT_TOTAL.* 
FROM 
    TITULO T 
LEFT JOIN 
    PC_TIT_TOTAL(T.TITULO_ID, 
                 :nat_valor_bruto, 
                 :nat_valor_desconto, 
                 :nat_valor_acrescimo, 
                 :nat_valor_baixado, 
                 :tipo_credito, 
                 :tipo_debito) TIT_TOTAL ON 
        (TIT_TOTAL.TITULO_ID = T.TITULO_ID) 
WHERE 
    (T.EMPRESAS_ID  = :EMPRESAS_ID) AND 
    (T.LAN_NAT_ID = :TIPO_ID_PAG) 
ORDER BY 
    T.TITULO_ID


Firebird 2.5
Multi Ltda

Multi Ltda

Responder

Posts

15/07/2016

Mario França

Quando se trabalha com UNION, não pode fazer order by, você precisa abstrair este union para uma subconsulta depois aplicar um order by.
Exemplo:

select id, nome from
(
select id, nome from tabelaA
union
select id, nome from tabelaB
) s1
order by id
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar