2017-02-20 14 views
0

私はこのSQLを持っている:グループbyがSQLの一部である場合の注文方法を教えてください。

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

は、私はサブストリング([英語]、1、1)の値で、これを注文することができます方法はありますか?

+0

与えられた答えに追加する:もちろん、ORDER BYサブストリング([英語]、1、1)を追加することができます。単なるコピー&ペーストで、1ワードが変更されました。 –

+1

[悪い習慣:(長さ)なしでvarcharを宣言する - Aaron Bertrand](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring- varchar-without-length.aspx) – SqlZim

答えて

2

を使用することができますが発生します。

選択したエイリアスは、次の順序で並べ替えることができます。グループbyはselectの前に実行し、order byはselectの後に実行します。

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 
関連する問題