0

SQL コード内で gradterm の最大値にアクセスする方法について質問があります。これが私の単純なコードの例です:

SELECT 
    Ceremony.Date, People.name, People.age
FROM 
    people
JOIN 
    Ceremony ON people.grad = Ceremony.grad

ご覧のとおり、両方のテーブルの grad 列を使用して、テーブルCeremony内の卒業生に基づいてテーブルの日付を表示していpeopleます。これが、最大の成績値を取得するために機能すると私が考えたものです。

SELECT 
    Ceremony.Date, people.name, people.age
FROM 
    people
JOIN 
    Ceremony ON MAX(people.grad) = MAX(Ceremony.grad)

実行しようとすると、次のエラーが発生します。

集計は、HAVING 句または選択リストのサブクエリにあり、列が外部参照で集計されていない限り、ON 句に表示できません。

関数で実行しようとしましたが、うまくいきCeremony.DateませMAXんでした。また、テーブルがどのように見えるかの例を次に示します。

peopleテーブル:

    |name|age|gradterm|
    -------------------
    |jake|20 |A       |
    |joe |23 |B       |

Ceremonyテーブル:

    |Date     |gradterm|
    --------------------
    |Dec 21   |   A    |
    |Fall 21  |   B    |

People テーブル "A" の場合gradterm、(ストアド プロシージャを介して) SQL データを表示するために使用している GridView は、Ceremony日付として "12 月 21 日" を表示します。また、peoples テーブルの gradterm が「B」である場合、グリッドビューには「Fall 21」と表示されます。それを比較して式典の日付を取得するときに、最大のgradtermを取得したいだけです。助けてくれたみんなに前もって感謝します!

4

1 に答える 1

1

基本的に、集計を行う前に、他のフィールドでグループ化する必要があります

SELECT c.Date, People.name, People.age, c.GradTerm
FROM people
INNER JOIN (SELECT Date, MAX(grad) [GradTerm]
            FROM Ceremony
            GROUP BY Date) c
    ON people.grad = c.grad
于 2013-08-05T18:20:13.060 に答える