2017-07-15 5 views
0

私は、2番目の日付から最新の日付を取得しようとしています。 ROW_NUM_DESCを使用して最新の日付を取得しました。したがって、where句はROW_NUM_DESC = 1として表示されます。日付が重複している最新の日付から2番目の日付

私のジレンマは、日付を引っ張った列に日付の重複があることです。したがって、ROW_NUM_DESC = 2は2番目の最新の値を正確に表していません。 select文でDISTINCT

  1. は、さまざまな理由で、以下を使用することはできません。 理由:部門名が記載されている別のフィールドがあります。私は、日付ごとに部署名のリストが必要です。

  2. GROUP BY-私は部門名のようなselect文からすべての列をリストする必要があります。 理由:ここでも、日付ごとの部門名の一覧が必要です。

  3. DATEPART-構文ではNUMBERの整数が必要です。 integerからの変換は、ROW_NUM_DESCにリストされている日付よりも大きい日時ですか?

何かお手数です!

答えて

0

あなたは以下のように2でパーティションとフィルタとのDENSE_RANKを使用することができます。

Select * from 
    (Select *, RowN = dense_rank() over(partition by idcolumn order by yourDate desc from Yourtable) a 
Where a.RowN = 2 

をここでパーティション個々idcolumnまたは他の列のためのトップ第二の最近の予定を取得したり、削除するために必要な場合に使用できるidcolumnによって

+0

こんにちは@ Kannanカンダサミー!答えてくれてありがとう。あなたが質問のこの部分に答えたら私の謝罪。私の問題は、列に日付が重複していることです。例えば、 1 = 07/12/17,2 = 07/12/17,3 = 07/09/17。したがって、それをRowN = 2にフィルタリングすると、最新の日付も返されます。 – SQLLEARNER

+0

テキストの最初の行を読み込む必要があります* "DENSE_RANKをパーティションに使用できます" * –

+0

しかし、2つのレコードが同じ2番目の日付を取得した場合、OPの要件に応じてOPが必要です所要量 –

関連する問題