SQL 計算結果で並べ替えレコードを抽出する

計算結果で並べ替えるにはORDER BY に計算式を設定します。

例1: SQL = "SELECT 製品No FROM 製品マスター ORDER BY 単価 * 在庫数 "
この場合、「単価 * 在庫数」を昇順で製品Noを取り出します。

例2: SQL = "SELECT 製品No , 単価 * 在庫数 AS 在庫金額 FROM 製品マスター ORDER BY 単価 * 在庫数 "
この場合、「単価 * 在庫数」を昇順で製品Noと計算結果の「在庫金額」を取り出します。
ORDER BY に計算結果の「在庫金額」を指定することはできません。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
「ORDER BY 打率」ボタンをクリックすると、安打÷打数×100 の計算結果で並び替えレコードを表示します。

■打率を計算し並び替え抽出した画面
打率で並び替え

Format関数を使わないと下記になります。
13: 130: 20: 15.3846153846154
11: 150: 25: 16.6666666666667
10: 130: 30: 23.0769230769231
16: 100: 45: 45

[野球データベース テーブル]
選手ID 打数  安打
10    130   30
11    150   25
13    130   20
16    100   45
ベースボール データ

[コード]
Option Compare Database

Private Sub コマンド8_Click()
    Dim SQL As String
    Dim rs As Recordset
    Me!テキスト1 = Null
    SQL = "SELECT 選手ID,打数,安打,format(安打/打数*100,'##0.00') AS 打率 FROM 野球データベース ORDER BY 安打/打数*100"
    Set rs = CurrentDb.OpenRecordset(SQL)
    Do Until rs.EOF
        Me!テキスト1 = Me!テキスト1 & rs![選手ID] & ": " & rs![打数] & ": " & rs![安打] & ": " & rs![打率] & vbCrLf
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

サンプルソフトのダウンロード

BackHome BackSQL Tips

Copyright(C) FeedSoft