2011-07-18 5 views
3

この文を実行しようとすると、私はこの問題を過ぎて句による注文アクセスでの別名との競合?

を得ることができなかったとして、これで私を助けてください:

SELECT distinct grade 
FROM tblStudents 
ORDER BY Val([grade]),grade; 

アクセスがDistinct

どう

ORDER BYVal([grade])競合と言われます私はこれを修正できますか?

は、SELECT DISTINCT文で記載されていないthatsのあなたが列で注文することができません事前に

+0

あなたが何をすべきかをしようとしていますここに?あなたはグレードを注文するだけでこれを達成できるはずです。 –

+0

私はあなたが表示するために使用するデータとは異なる表現でソートする必要がある場合、データストレージの問題があると思います。 Val()関数は文字列値をソート用の数値に変換することを意味します。つまり、 "98"と "100"を文字列としてGRADEフィールドに格納しています。数値の場合は、Val()で変換する必要はありません。一方、実際に値が数値として格納されていれば、時間とCPUサイクルを無駄にしてVal()関数に渡します。 –

答えて

4

SELECT句のすべての列によってグループ化するのと同じ効果があります。

SELECT grade 
    FROM tblStudents 
GROUP 
    BY grade 
ORDER 
    BY VAL(grade), grade; 

注私は、そう私はエラーを得たgrade IS NULL行を、削除する必要がありましたが、「データ型条件式の不一致。この使用

7

をいただき、ありがとうございます。等級を強制的に整数にしたい場合DISTINCTキーワードを使用して

SELECT DISTINCT Val([grade]) 
FROM tblStudents 
ORDER BY Val([grade]); 
2

SELECT DISTINCT Val([grade]) 
FROM tblStudents 
ORDER BY Val([grade]); 

非数値のレコードが0

として示すが、下記の数値と非数値レコードの両方を示しています

SELECT grade 
    FROM tblStudents 
GROUP BY grade 
ORDER BY VAL(grade), grade; 
関連する問題