1

私はテーブルを持っていると言う

StoreID   TotalSales   Month  Year
  --      ----------   -----  ----
  1         10           1    2012
  2         2            1    2012
  3         15           1    2012
  1         4            2    2012
  2         5            2    2012

必要なもの: 一意の「月/年」ごとに、売上が最も高い上位 2 つの StoreID を取得します。

これを行う方法がわかりません。で試しましたcross applyが、うまくいかないようです。これは私の頭をはるかに超えているので、誰かが正しい方向に向けて微調整してくれることを願っています.

4

1 に答える 1

2

このクエリはCommon Table ExpressionandWindow Functionを使用して、行内のすべての列を取得できるようにします。動作しますSQL Server 2005 and up

WITH records
AS
(
    SELECT  StoreID, TotalSales , Month, Year,
            DENSE_RANK() OVER (PARTITION BY Month, Year
                                ORDER BY TotalSales DESC) rn
    FROM    tableName
)
SELECT  StoreID, TotalSales , Month, Year
FROM    records
WHERE   rn <= 2
于 2013-03-07T04:59:58.850 に答える