Sql 选择min date列时提供column=值,比较两列

Sql 选择min date列时提供column=值,比较两列,sql,hive,hiveql,Sql,Hive,Hiveql,我有下表 sec_id|pri_id |date_col| abc| 1 |28-02-2017| bcd| 1 |09-01-2017| ef| 1 | | ghi| 2 |04-04-2017| jkl| 2 |05-05-2016| 如果sec_id属于相同的pri_id,则选择日期最早的sec_id,并将其值设为1,其他值为零 输出类似这样的内容 另外还有其他条件,如果日期列为空,则取列。。。如果col_

我有下表

sec_id|pri_id   |date_col|  
abc|    1   |28-02-2017|    
bcd|    1   |09-01-2017|    
ef| 1   |   |
ghi|    2   |04-04-2017|    
jkl|    2   |05-05-2016|
如果sec_id属于相同的pri_id,则选择日期最早的sec_id,并将其值设为1,其他值为零

输出类似这样的内容


另外还有其他条件,如果日期列为空,则取列。。。如果col_e=r,则1作为新的col,如果col_e为null,则取col_f..if col_f..if col_f最低值..如wise 6其他条件。但同时,就第一个问题而言,您可以尝试以下方法:

SELECT t1.sec_id,
       t1.pri_id,
       t1.date_col,
       CASE WHEN t1.date_col = t2.date_col THEN 1 ELSE 0 END AS new_column
FROM   my_table t1
JOIN   my_table t2
  ON   t1.pri_id = t2.pri_id
 AND   t2.date_col = (SELECT MIN(date_col)
                      FROM   my_table t3
                      WHERE  t2.pri_id = t3.pri_id)

唯一应该用于日期的格式是ISO格式YYYY-MM-dd是的,它是YYYY-MM-dd。我的坏..嗨,都都。。我得到了新专栏的所有“1”。明白了。。我已将Secu id作为我的Secu id。。。原来是f_id。谢谢都都。@Ankita-为什么你评论它在一个显然不起作用的代码上工作?因为它只需要一些小的修改。
SELECT t1.sec_id,
       t1.pri_id,
       t1.date_col,
       CASE WHEN t1.date_col = t2.date_col THEN 1 ELSE 0 END AS new_column
FROM   my_table t1
JOIN   my_table t2
  ON   t1.pri_id = t2.pri_id
 AND   t2.date_col = (SELECT MIN(date_col)
                      FROM   my_table t3
                      WHERE  t2.pri_id = t3.pri_id)
select  *
       ,case 
            when pri_id = min(pri_id) over (partition by sec_id) 
            then 1 
            else 0 
        end as new_column

from    mytable
+-----+--------+------------+------------+
| dt  | sec_id |   pri_id   | new_column |
+-----+--------+------------+------------+
| ef  |      1 | (null)     |          0 |
| bcd |      1 | 2017-01-09 |          1 |
| abc |      1 | 2017-02-28 |          0 |
| jkl |      2 | 2016-05-05 |          1 |
| ghi |      2 | 2017-04-04 |          0 |
+-----+--------+------------+------------+