2

ID1、、、、、の 5 つの列を持つテーブルのクエリを作成する必要ID2ID3ありAますB。ここで、 ID1ID2、およびID3が主キーを形成します。

それぞれについてID1、最大値を見つけますA。最大値を持つ が2 つ以上ある場合Aは、最大値を持つレコードを 1 つだけ選択しますBID2最後に、対応すると の値で結果を表示しID3ます。

たとえば、次の表の場合

ID1 ID2 ID3   A  B
  1   2   3  10  5 
  1   3   4  30  4
  1   3   5  30  3
  2   2   3   5  1
  2   3   4   9  2
  2   3   5  11  3

クエリの結果は次のようになります。

ID1 ID2 ID3  Max_A  
  1   3   4     30  
  2   3   5     11  
4

1 に答える 1

3

これの要点は、

  • ROW_NUMBER各行に a を追加
  • それぞれの番号を再開しますID1
  • ORDER ハイからローまでAB.
  • CTE簡単にアクセスできるように入れますrn

SQL ステートメント

;WITH q AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY A DESC, B DESC) AS rn
  FROM YourTable
)
SELECT *
FROM   q
WHERE  rn = 1
于 2012-07-04T15:11:52.410 に答える