Estou fazendo a consulta abaixo e não consigo ordenar a data, retorna o seguinte erro: ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Algumas observações:
Quando eu removo o “DISTINCT”, a consulta é concluída com sucesso.
Alterei a data para o formato “DD/MM/YYYY”.
Agrupei as colunas para tentar solucionar (comentado na query abaixo), porém o erro persistiu.
SELECT DISTINCT
RG.EMP_COD_DESCR_X as Empresa
,RG.CHAPA_X as Chapa
,RG.PFIS_NOME_X as Servidor
,convert (nvarchar(30), RG.DT_COMP_X, 103) as Competência
,RG.EVEN_COD_X as Evento_Cod
,RG.VLR_X as Valor
FROM [SQL_GRH_ODS_LINKED].[GRH_2015].[dbo].[GMS_RELATORIO_GERAL] RG
where RG.EVEN_COD_X IN (‘380’, ‘20380’)
– group by RG.EMP_COD_DESCR_X, RG.CHAPA_X, RG.PFIS_NOME_X, RG.DT_COMP_X, RG.EVEN_COD_X, RG.VLR_X
order by 1, 3, RG.DT_COMP_X;
A mensagem diz que, se o select está usando distinct, as colunas presentes no order by também precisam estar presentes no select (individualmente, pelo que entendo).
Adicione a coluna RG.DT_COMP_X no select (mesmo ela estando presente no convert). Algo como:
SELECT DISTINCT
RG.EMP_COD_DESCR_X as Empresa
,RG.CHAPA_X as Chapa
,RG.PFIS_NOME_X as Servidor
,RG.DT_COMP_X
,convert (nvarchar(30), RG.DT_COMP_X, 103) as Competência
,RG.EVEN_COD_X as Evento_Cod
,RG.VLR_X as Valor
FROM [SQL_GRH_ODS_LINKED].[GRH_2015].[dbo].[GMS_RELATORIO_GERAL] RG
where RG.EVEN_COD_X IN (‘380’, ‘20380’)
– group by RG.EMP_COD_DESCR_X, RG.CHAPA_X, RG.PFIS_NOME_X, RG.DT_COMP_X, RG.EVEN_COD_X, RG.VLR_X
order by 1, 3, RG.DT_COMP_X;
Primeiramente, obrigado pela ajuda!
Pois então, realmente ao inserir a DT_COMP_X no SELECT, a consulta é concluída, porém o intuito seria deixar apenas a coluna da forma convertida, não queria manter duas colunas com datas.
Nesse caso, acha que não seria posssível?
Ah, ok, é um campo data e a conversão dele para string não faz sentido de ordenar.
Na realidade, essa conversão não deveria ser reponsabilidade da BD mas sim da camada de apresentação. A tua query SQL deveria devolver a data normalmente, como um date e seria responsabilidade de quem apresenta os dados formatar essa data.
Se queres manter como tens, a formatar a data na BD e ordenar por essa coluna, terás sempre de ter a coluna original na query SQL para ordenar.