需要基于SQL中的可用列的列结果

时间:2017-03-22 00:28:35

标签: sql sql-server sql-server-2008

我有一个视图会返回以下结果:

enter image description here

我需要像下面的图像一样放置标识符

必需的输出:

enter image description here

输出说明:如果您可以看到图像1,那么图像释放1中有3个日期。从那里我需要得到1作为MAX的标识符(IMPL_DATE)。在RELEASE_ID = 1,我们有08/20/2016,08/09/2016和2016年10月31日。从2016年10月31日是最大的约会。因此,需要标识符为1,其他2将为0.与RELEASE_ID 2相同的事情我们有2个日期,从它们01/13/2017是最大的日期所以,需要在该行中的1和其他' s将是0。

提前谢谢......

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()