Union na mesma tabela
Olá, Preciso fazer union na mesma tabela para pegar os pedidos de um periodo sem inatividade e pegar também os clientes que não tem pedidos nenhum durante esse periodo, tenho a seguinte query :
SELECT
CLIENTE.CODECLI,
CLIENTE.FANTASIA,
CLIENTE.EMAIL,
CLIENTE.TELEFONE,
CLIENTE_REPRESENTANTE.RAZAO,
MAX(PED_CAB.PEDIDO),
MAX(PED_CAB.DT_PED),
UF_CODIGOS.UF
FROM CLIENTE
INNER JOIN "PED_CAB" PED_CAB
ON CLIENTE.CODECLI = PED_CAB.CODECLI
INNER JOIN "CLIENTE_REPRESENTANTE" CLIENTE_REPRESENTANTE
ON CLIENTE."RAZAOSOCIAL" = CLIENTE_REPRESENTANTE."RAZAO"
INNER JOIN "ENDERECO_CLI" ENDERECO_CLI
ON PED_CAB.CODECLI = ENDERECO_CLI.CODECLI
INNER JOIN "UF_CODIGOS" UF_CODIGOS
ON ENDERECO_CLI.ESTADO_ID = UF_CODIGOS.COD_NACIONAL
WHERE
(DATEDIFF(DAY,PED_CAB.DT_PED, getdate()) >= 150)
UNION
SELECT
CLIENTE.CODECLI,
CLIENTE.FANTASIA,
CLIENTE.EMAIL,
CLIENTE.TELEFONE,
CLIENTE_REPRESENTANTE.RAZAO,
null,
NULL,
UF_CODIGOS.UF
FROM CLIENTE
INNER JOIN "PED_CAB" PED_CAB
ON CLIENTE.CODECLI = PED_CAB.CODECLI
INNER JOIN "CLIENTE_REPRESENTANTE" CLIENTE_REPRESENTANTE
ON CLIENTE."RAZAOSOCIAL" = CLIENTE_REPRESENTANTE."RAZAO"
INNER JOIN "ENDERECO_CLI" ENDERECO_CLI
ON PED_CAB.CODECLI = ENDERECO_CLI.CODECLI
INNER JOIN "UF_CODIGOS" UF_CODIGOS
ON ENDERECO_CLI.ESTADO_ID = UF_CODIGOS.COD_NACIONAL
WHERE
not exists(Select CLIENTE.CODECLI FROM CLIENTE WHERE PED_CAB.CODECLI = CLIENTE.CODECLI)
GROUP BY
CLIENTE.CODECLI,
CLIENTE.FANTASIA,
CLIENTE_REPRESENTANTE.RAZAO,
--PED_CAB.PEDIDO,
--PED_CAB.DT_PED,
UF_CODIGOS.UF
ORDER BY
CLIENTE.FANTASIA ASC,
CLIENTE_REPRESENTANTE.RAZAO ASC
Porém dá o seguinte erro que não consigo eliminar:
Column 'CLIENTE.CODECLI' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Alguém poderia dar uma dica ?
Obrigado
Discussão (6)
Carregando comentários...