2016-11-24 14 views
0

CTEを使用してSQL Serverの各パーティションの最大行番号を選択する方法を教えてください。SQL Serverの各パーティションに最大rownumberを選択する方法

ある従業員が4つのトランザクション行を持ち、別の従業員が1つの行しか持たず、従業員の最大行を選択する方法を考えます。

私は

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) 

次私が試したいという従業員 の最新の取引を取得するために、従業員のための最大行数を取得したいジョブ表を持っていますが、左ください参加する上で必要か、ではないですすべてが必要ですか?

+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の順序を逆にして、どこを選択し、テーブル全体でhaving.greatest ROWNUMのある従業員だけをフェッチしているクエリ上記のように1行のみが任意の従業員のために存在する場合ROWNUMのを取得する方法を教えてください行番号は昇順(ASC)または降順(DESC)にすることができます。最新の日付を最新の日付に変更する場合は、最初に最も早いレコードを選択します。ORDER BY date ASC (or date)

関連する問題