2016-11-24 64 views
0

有誰可以告訴我如何使用CTE爲SQL Server中的每個分區選擇最大行數。如何在SQL Server中爲每個分區選擇最大行數

假設任何員工有4個事務行,另一個員工只有一個行,那麼如何選擇這些員工的最大行數。

我有工作表我想獲取最大行數爲員工針對該員工 以下

With CTE as (
Select 
My fields, 
Rownum = row_number() over(partition by emplid order by date) from jobtable 
Where 
Myconditions 
) 
Select * from CTE B left outer join 
CTE A on A.emplid = B.emplid 
Where 
A.rownum = (select max(a2.rownum) from jobtable a2) 

待辦事項左上方要求加入我會試圖獲取最新的交易,或者是不都需要嗎? 請告訴我如何,如果任何員工只有1行存在如上的查詢只讀取這是在整個表having.greatest ROWNUM員工

+0

編輯你的問題,並提供示例數據,所需的結果和一個查詢,顯示您嘗試回答題。 –

+0

最大記錄?上次交易或最大價值。示例數據將有助於減少或消除假設 –

+0

正如其他人所建議的,並不完全清楚您的期望結果是什麼,您的數據看起來像什麼,您已經嘗試了什麼以及您遇到了哪些特定問題。如果您可以提供這些信息,那麼人們會更容易回覆並幫助您。 – 3N1GM4

回答

2
With CTE as (
    Select 
     My fields, 
     Rownum = row_number() over(partition by emplid order by date DESC) 
    from jobtable 
    Where 
     Myconditions 
) 

SELECT * 
FROM 
    cte 
WHERE 
    RowNum = 1 

只是扭轉你的ROW_NUMBER的順序,並選擇取ROWNUM它等於1.行號可以是升序(ASC)或降序(DESC)。所以如果你想要最近的日期得到最新的記錄ORDER BY date DESC,如果你想第一個最早的記錄,你會選擇ORDER BY date ASC (or date)

相關問題