2017-07-15 94 views
0

我正在嘗試檢索第二次約會的最近日期。我利用ROW_NUM_DESC來檢索最近的日期。因此,where子句顯示爲ROW_NUM_DESC = 1.第二次到最近的日期重複的日期

我的兩難處境是,我從中抽取日期的列有日期重複。因此,ROW_NUM_DESC = 2不是第二個最近值的精確表示。

不能使用的原因如下:

  1. DISTINCT SELECT語句。 原因:還有另外一個字段列出了部門名稱。我想要每個日期的部門名稱列表。

  2. GROUP BY-要求我列出select語句中的所有列,如部門名稱。 原因:同樣,我想要列出每個日期的所有部門名稱。

  3. DATEPART-在語法中需要NUMBER的整數。我可以從整數轉換日期時間是否大於ROW_NUM_DESC中列出的日期?

任何幫助表示讚賞!!!!

回答

0

您可以通過2如下使用DENSE_RANK與分區和過濾:通過idcolumn如果需要得到倒二最近被任命爲個人idcolumn或其他列或刪除您可以使用

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

這裏分區

+0

嗨@Kannan Kandasamy!謝謝你的答案。如果你回答了這部分問題,我很抱歉。我的問題是列中有重複的日期。舉例來說, 1 = 07/12/17,2 = 07/12/17,3 = 07/09/17。因此,將它過濾爲RowN = 2也會返回最近的日期。 – SQLLEARNER

+0

第一行文本現在應該讀*「你可以使用帶分區的DENSE_RANK」* –

+0

是的,如果兩個記錄得到相同的第二個日期,這仍然是問題,這取決於OP的要求,那麼OP可能需要使用top 1,如果是要求 –