2014-10-03 2 views
2

У меня есть этот запрос:SQL Заказать сервер с помощью цифровых VARCHAR

select cast(MONTH(c.dataregistro) as VARCHAR(2)) as DATA, numberofquotesreturned, count(*) AS CountNumberQuotes from contratacao c 
inner join teleportpedidocotacao tpc on c .idcontratacao = tpc.idcontratacao 
where cast(c.dataregistro as date) > '2014-01-01 00:00:00' AND numberofquotesreturned = 5 
group by numberofquotesreturned, cast(MONTH(c.dataregistro) as VARCHAR(2)) 
order by cast(MONTH(c.dataregistro) as VARCHAR(2)) 

Результаты являются:

10 5 347 
2 5 112 
3 5 914 
4 5 786 
5 5 1184 
6 5 2361 
7 5 2430 
8 5 2184 
9 5 2709 

Я хочу заказать по всему номеру, указанному на первой колонке и, как вы можете видеть На первом месте «10». Как я могу это исправить?

+0

@sgeddes Msg 8127, уровень 16, состояние 1, строка 92 Колонка "contratacao.DataRegistro" является недействительным в ORDER BY предложении, поскольку он не содержится в либо агрегатная функция, либо предложение GROUP BY. –

ответ

1

Просто удалите бросание на varchar:

select MONTH(c.dataregistro) as DATA, numberofquotesreturned, count(*) AS CountNumberQuotes from contratacao c 
inner join teleportpedidocotacao tpc on c .idcontratacao = tpc.idcontratacao 
where cast(c.dataregistro as date) > '2014-01-01 00:00:00' AND numberofquotesreturned = 5 
group by numberofquotesreturned, MONTH(c.dataregistro) 
order by MONTH(c.dataregistro) 
+0

У меня столбец «contratacao.DataRegistro» недействителен в предложении ORDER BY, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. –

+1

На самом деле, этот 'cast' to' varchar' избыточен во всем запросе. Я отредактировал сообщение, чтобы полностью удалить его. – Mureinik

+0

вот и все! Благодаря! Я чуть было не усложнил это! По пятницам! Я дам вам правильный ответ! ура –