2017-02-20 3 views
0

У меня есть этот SQL:Как мне сделать заказ, когда группа является частью SQL?

Select Substring([English],1,1) Col1, 
convert(varchar,Count(1)) Col2 
From Phrase Group by Substring([English], 1, 1) 

Есть ли способ, я могу заказать это по значению подстроки ([English], 1, 1)?

+0

Добавление к ответам: Вы, конечно, можете просто добавить 'ORDER BY подстрок ([Английский], 1, 1)' - простое копирование и вставка, одно слово изменилось. –

+1

[Плохие привычки пинать: объявление «varchar» без (длина) - Аарон Бертран] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring- varchar-without-length.aspx) – SqlZim

ответ

2

Просто добавьте заказ после того, как группы по.

Примечание: вы можете использовать псевдонимы из списка в порядке, но не в группе; как группа, выполняется перед выбором, и порядок выполняется после выбора.

SELECT Substring([English],1,1) Col1 
     , convert(varchar,Count(1)) Col2 
FROM Phrase 
GROUP BY Substring([English], 1, 1) 
ORDER BY COL1 
+1

@ DVT да, обновленный. – xQbert

0
select Col1, Col2 FROM 
(Select Substring([English],1,1) Col1, 
convert(varchar,Count(1)) Col2 
From Phrase Group by Substring([English], 1, 1) 
) as Table1 
Order By Col1 
+3

В подзапросе нет необходимости - просто добавьте 'order by' в конец инструкции и обратитесь к вычисленным псевдонимам столбцов. –

1

Сортировка происходит после расчета колонки, вы можете использовать псевдоним столбца

Select Substring([English],1,1) Col1, 
    convert(varchar,Count(1)) Col2 
    From Phrase 
    Group by Substring([English], 1, 1) 
    Order By Col1 
1

Просто используйте order by с псевдонимом столбцов.

Select Substring([English],1,1) Col1, 
convert(varchar,Count(1)) Col2 
From Phrase Group by Substring([English], 1, 1) 
order by Col1