0

私はいくつかのデータを持っています

code    amount  month
aaa1    100     1
aaa1    200     2
aaa1    300     3
aaa4    450     2
aaa4    400     3
aaa6    0       2

上記から、コードごとに max(month) の行を取得したい

code    amount  month
aaa1    300     3
aaa4    400     3
aaa6    0       2

このための ms sql クエリを作成するにはどうすればよいですか?

4

3 に答える 3

2

これを行うには、ランキング機能 ROW_NUMBER()を使用できます。PARTITION BY code ORDER BY month DESC

WITH CTE
AS
(
   SELECT 
     code, amount, month,
     ROW_NUMBER() OVER(PARTITION BY code 
                       ORDER BY month DESC) AS RN
   FROM Tablename
)
SELECT code, amount, month
FROM CTE
WHERE RN = 1;

monthこれにより、それぞれの最大値が得られますcode

于 2013-09-08T08:03:58.647 に答える
2
;WITH MyCTE AS
(
    SELECT code,
           amount,
           month,
           ROW_NUMBER() OVER(PARTITION BY code ORDER BY code,month DESC) AS rownum
    FROM   table
)
SELECT *
FROM   MyCTE 
WHERE  rownum = 1
于 2013-09-08T08:05:44.513 に答える
1

これを試して

SELECT * 
FROM 
  (SELECT MAX(MONTH) month, code
  FROM table1
  GROUP BY code) res
JOIN table1
ON res.month = table1.month 
AND res.code = table1.code

これがSQLfiddleです

于 2013-09-08T08:33:52.613 に答える