一般來說,如果要找出資料裏面的第一筆
我們一定直覺式的用SELECT TOP 1 ...來取得。

如果要取得每個GROUP的第一筆,或是最大值時…
TOP 1這指令就不合適了,因為TOP 1是找出所有資料的「第一筆」,並非找出每個GROUP的第一筆。

我們可以用CTE的方式來先取得您要的資料,後續也可以再和其他table來join

假設我們今天如果要找出[所有產值] 這個table中,某位員工歷年所有資料的最大產值是在那個月份

[所有產值]的欄位介紹如下:

1. [員工代碼]
2. [員工產值]
3. [年月]

 

;WITH cte AS
(
   SELECT *,
         ROW_NUMBER() OVER (PARTITION BY [員工代碼] ORDER BY [員工產值] DESC) AS rn
   FROM [所有產值]
)

SELECT *
FROM cte
WHERE rn = 1


如此一來就知道員工在那個月分有著最高的產值

arrow
arrow
    全站熱搜

    湯瑪的吳 發表在 痞客邦 留言(0) 人氣()