2017-03-22 95 views
0

我有一種觀點認爲這是返回以下結果可用列導致列:需要根據在SQL

enter image description here

我需要把標識,就像下面的圖片

需要的輸出:

enter image description here

輸出的說明:如果你能看到的圖像1和該映像發佈1有3個日期。從那我需要得到1作爲MAX的標識符(IMPL_DATE)。在RELEASE_ID = 1,我們有08/20/2016,08/09/2016和10/31/2016。從這10/31/2016是最大的日期。因此,需要標識符爲1和其他2將爲0.與RELEASE_ID 2相同的事情,我們有2個日期,從它們01/13/2017是最大的日期,所以需要1在那一行和其他將是0 。

在此先感謝...

回答

1

你可以用窗口函數做到這一點:

select t.*, 
     (case when rank() over (partition by portfolio_id, release_id 
           order by impl_date desc 
          ) = 1 
      then 1 else 0 
     end) as indentifier 
from t; 

以上將分配「1」的最大日期的所有行。如果要確保只有一行被分配一個值(即使存在關係),則使用row_number()而不是rank()

+0

感謝您的幫助@Gordon Linoff –