Bom dia Senhores!!
Pela primeira vez estou por aqui com uma dúvida..
Tenho essa consulta aqui..
SELECT DISTINCT EVEN.COTR_CODIGO + ' ' +
CONVERT(VARCHAR, EVEN.EVEN_MOMENTO, 3) + ' ' +
SUBSTRING(CONVERT(VARCHAR, EVEN.EVEN_MOMENTO, 108), 1, 5) + ' ' +
MATR.MATR_MATRICULA AS MARCACAO
FROM FORACESSO.EVENTO EVEN,
FORACESSO.MATRICULADO MATR
WHERE MATR.MATR_ID = EVEN.MATR_ID
AND EVEN.EVEN_TIPO IN (1, 3, 4)
AND EVEN.EVEN_NATUREZA = 2
AND EVEN.EVEN_MOMENTO BETWEEN '31/01/2012' AND '01/02/2012'
AND MATR.MATR_MATRICULA = '95'
GROUP BY EVEN.EVEN_MOMENTO, EVEN.COTR_CODIGO, MATR.MATR_MATRICULA
ORDER BY EVEN.EVEN_MOMENTO
Quando rodo essa rotina ele me retorna
Msg 145, Level 15, State 1, Line 1
Itens ORDER BY devem aparecer na lista de seleção se SELECT DISTINCT for especificado.
Fiz alguns testes aqui que fizeram a consulta funcionar tais como alterando a consulta para essa...
SELECT DISTINCT EVEN.COTR_CODIGO AS 'CODIGO',
CONVERT(VARCHAR, EVEN.EVEN_MOMENTO, 3) AS 'DATA',
SUBSTRING(CONVERT(VARCHAR, EVEN.EVEN_MOMENTO, 108), 1, 5) AS 'HORA',
MATR.MATR_MATRICULA AS MATRICULA
FROM FORACESSO.EVENTO EVEN,
FORACESSO.MATRICULADO MATR
WHERE MATR.MATR_ID = EVEN.MATR_ID
AND EVEN.EVEN_TIPO IN (1, 3, 4)
AND EVEN.EVEN_NATUREZA = 2
AND EVEN.EVEN_MOMENTO BETWEEN '31/01/2012' AND '01/02/2012'
AND MATR.MATR_MATRICULA = '95'
ORDER BY 3,2,1,4
Dessa forma funciona porem ele desagrupa o resultado devido a não utilização do +' '+ e eu sou obrigado a mandar AGRUPA e ORDENADO pelo EVEN_MOMENT
Como resultado final preciso dessa situação abaixo.
103 31/01/12 08:49 60620395
103 31/01/12 14:31 60620395
102 31/01/12 18:11 60620395
Espero ter sido claro.
Obrigado.
ATT.
Daniel