0

、、、の列AppIdを持つテーブルがあります。テーブルは、同じ に対して複数のエントリを持つことができます。今私がやろうとしているのは、それぞれの注文ごとにDescを取得することです。CommentTimeStampAppIdTop 1 CommentAppIdTimeStamp

私は次のようなことを試しました

SELECT TOP 1 Comment, AppId FROM comments GROUP BY AppId

しかし、エラーが発生するため、これは機能しないようです

Column 'comments.Comment' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

誰かがこれを機能させる方法について正しい方向に向けてくれますか

ありがとう

4

1 に答える 1

4

データベース エンジンによっては、 を使用できる場合がありますROW_NUMBER()

SELECT Comment, AppId
FROM (
    SELECT Comment, AppId, ROW_NUMBER() OVER (PARTITION BY AppId ORDER BY TimeStamp DESC) AS GroupRowNumber
    FROM comments
) AS sub
WHERE GroupRowNumber = 1

それがない場合は、もっとハックなものが必要です。

SELECT Comment, AppId
FROM comments
WHERE TimeStamp = (SELECT MAX(TimeStamp) FROM comments AS comments_inner WHERE comments_inner.AppId = comments.AppId)
于 2013-05-20T10:34:51.047 に答える