1

これが私のテーブルTheTableの様子です

ColA  | ColB  | ColC
------+-------+------
abc   | 2005  | item7
abc   | 2010  | item3
def   | 2009  | item2
def   | 2010  | item4
def   | 2011  | item5
def   | 2012  | item1

そして、この結果を返すクエリを作成したいと思います。

ColA  | ColB  | ColC
------+-------+------
abc   | 2010  | item3
def   | 2012  | item1

私は結局:

SELECT TheTable.ColA,TheTable.ColB,TheTable.ColC
FROM TheTable,(SELECT ColA a,MAX(ColB) b FROM TheTable GROUP BY ColA) t
WHERE t.a=TheTable.ColA AND t.b=TheTable.ColB

しかし、この種のネストされたクエリが非常に効率的かどうかはわかりません。だから問題は、より良い方法はありますか?

4

1 に答える 1

3
WITH OrderedTable AS
(
    SELECT ColA, ColB, ColC,
        ROW_NUMBER() OVER (PARTITION BY ColA ORDER BY ColB DESC) AS Row
    FROM TheTable
)
SELECT ColA, ColB, ColC FROM OrderedTable WHERE Row = 1
于 2012-06-13T11:17:14.630 に答える