特定の基準でグループ化するAccessのSQLクエリを作成し、使用されなかった異なる条件グループ化するには?私は色を繰り返さないオブジェクトのリストで終わるしたい特定の基準でSQLグループを作成し、グループ内で異なる条件で注文する
autoID name color shape weight height
、それは各色グループで最も高いオブジェクトを選択:たとえば、列で、私はテーブルと呼ばれるtblObjectsがあるとします。同じ色、同じ高さのオブジェクトがある場合は、最も重いものを選択します。
私は色でグループ化し、高さでグループ内を順序付けし、次に重みをつけて1で切り捨てることができると考えました。これは、すべての色の繰り返しを排除し、私の基準に従って各色の "代表"
SELECT autoID, name, color, shape, weight, height
FROM tblObjects INNER JOIN(SELECT
color, COUNT(*) AS NumberSameColor
FROM tblObjects
GROUP BY color) AS tblGroups ON tblObjects.color = tblGroups.color;
が、私はORDER BY height, weight
しようとすると、私は私がで注文する使用しようとしています列がの一部ではないというエラーが出ます:
ここに調査した結果、私はコードとすることで、グループすることができました集約。クエリの最後に "order by"ステートメントを置くと、順序を優先してグループを元に戻します。 この制限を回避して、必要な結果を得るにはどうすればよいですか?
私は実際にはが必要であることがわかります。も集計する必要がありますか?私はこのアプローチに非常に簡単な方法がないのですか?
これは素晴らしいです。ありがとうございました。何が起こっているのかを説明することができますか?つまり、*なぜ*動作するのですか?私を混乱させる部分は、where節の "o.autoid = "です。 – ASignor