Fórum SubSelect com union all, order by e group by #562390
16/09/2016
0
SELECT
TABNOV.NUMERO_PROCESSO,
TABNOV.DATA_ANDAMENTO,
TABNOV.DATA_PUBLICACAO,
TABNOV.STATUS,
CLIENTES.NOME_CLIENTE,
FROM
(select
T1.NUMERO_PROCESSO,
MAX(T3.DATA) as DATA_ANDAMENTO,
MAX(T4.DATA) as DATA_PUBLICACAO,
T1.DATA_ESCRITORIO,
T1.DATA_DISTRIBUICAO,
T1.STATUS,
T1.COD_CLIENTE,
from
PROCESSOS T1
left join ANDAMENTOS_PROCESSUAIS T3 on T3.NUMERO_PROCESSO_AUX = T1.NUMERO_PROCESSO
left join PUBLICACOES T4 on T4.NUMERO_PROCESSO_AUX = T1.NUMERO_PROCESSO
union all
select
T1.NUMERO_PROCESSO,
MAX(T3.DATA) as DATA_ANDAMENTO,
MAX(T4.DATA) as DATA_PUBLICACAO,
T1.DATA_ESCRITORIO,
T1.DATA_DISTRIBUICAO,
T1.STATUS,
T1.COD_CLIENTE,
from
PROCESSOS T1
left join ANDAMENTOS_PROCESSUAIS T3 on T3.NUMERO_PROCESSO_AUX = T1.NUMERO_PROCESSO
left join PUBLICACOES T4 on T4.NUMERO_PROCESSO_AUX = T1.NUMERO_PROCESSO
where
T1.NUMERO_PROCESSO2 <> "") TABNOV,
CLIENTES
WHERE
TABNOV.COD_CLIENTE = CLIENTES.COD_CLIENTE
group by
TABNOV.NUMERO_PROCESSO, TABNOV.STATUS, CLIENTES.NOME_CLIENTE
order by
TABNOV.DATA_ANDAMENTO, TABNOV.NUMERO_PROCESSO
esse é só um resumo do SQL ele vai ate o 8 só que aparece uma erro
e como não tenho muita experiencia com SQL fico meio desorientado.
podem me ajudar?
Eduardo Silva
Curtir tópico
+ 0Post mais votado
19/09/2016
Imagine esse select abaixo:
SELECT CODIGO, NOME FROM TABELA
Quando for ordenar a tabela você pode ordenar por CODIGO (coluna 1) ou NOME (coluna 2).
O SQL permite que você referencie a coluna por números no ORDER BY.
Assim, quando você coloca ORDER BY 1,2, quer dizer que está ordenando por CODIGO e NOME.
Ja um ORDER BY 2,1, quer dizer que você está ordenando por NOME e CODIGO
E o que o Dirceu falou está correto, quando você usa um GROUP BY, tem que colocar no GROUP todas as colunas que estão no seu SELECT que não estejam sendo agregadas.
No caso da sua QUERY, você está dando um MAX na data, mas está colocando o GROUP BY na query de fora.
Entendeu?
Grande abs
Luiz Santos
Gostei + 2
Mais Posts
16/09/2016
Chrystian
Gostei + 0
17/09/2016
Eduardo Silva
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
Gostei + 0
17/09/2016
Dirceu Morais
Posso estar falando besteira, mas no group by vc tem que acrescentar todos os campos do Select
TABNOV.DATA_ANDAMENTO,
TABNOV.DATA_PUBLICACAO,
TABNOV.STATUS,
CLIENTES.NOME_CLIENTE
e quando existe a clausula union o order by voce usa numeros.
se você quer organizar por TABNOV.DATA_ANDAMENTO, TABNOV.NUMERO_PROCESSO
então seria order assim:
Order by 2,1
Gostei + 1
19/09/2016
Eduardo Silva
Gostei + 0
19/09/2016
Eduardo Silva
Gostei + 0
19/09/2016
Luiz Santos
Isso.
Você só usa o Group By se usar alguma função de agregação (SUM, COUNT, AVG, MAX e MIN)
Gostei + 1
19/09/2016
Dirceu Morais
Se você tem por exemplo:
SELECT NUMERO_PROCESSO, DATA_ANDAMENTO, DATA_PUBLICACAO, STATUS, NOME_CLIENTE FROM Cliente
Se você quiser ordenar pelo nome do cliente, você pode usar:
Order by Nome_cliente
ou
Order by 5
Gostei + 1
20/09/2016
Eduardo Silva
pode fechar o tópico
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.