标记开始日期和结束日期的更改

时间:2019-11-18 03:56:12

标签: sql hive hiveql

我必须在Hive UI(SQL和Hive的混合)中编写代码,

以下是询问:

enter image description here

Start date             End date           flag
10/10/19               defult date         0
11/10/19               10/20/19            1
11/21/19               10/20/19            1
11/21/19(2nd entry)   default date         0

如果一个月中有1个条目,则标志为0,如果同一月有多个条目,则最新日期的标志为0,其他标志为1。

这还包括时间戳,如果同一天有两个条目,则最新标志将为0。

请让我知道更多详细信息。谢谢

1 个答案:

答案 0 :(得分:0)

您必须将数据存储为字符串,因为“默认”不是有效的日期值。那不是一个好的格式,但是您可以使用它。

您要row_number()

select t.*,
       (case when row_number() over (partition by substr(startdate, 1, 2), substr(startdate, 7, 2)
                                     order by startdate desc
                                    ) = 1
             then 0 else 1
        end) as flag
from t;

当然,如果将列存储为日期/时间值,则使用适当的函数来提取月份和年份。