[英]provide column= value with selecting min date column ,compare 2 columns
我有下表
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,其他设置为零。
输出类似此输出表的内容
|sec_id |pri_id |date_col |new_column |
|abc |1 |28-02-2017| 0|
|bcd |1 |09-01-2017| 1|
|ef |1 | | 0|
|ghi |2 |04-04-2017| 0|
|jkl |2 |05-05-2016| 1|
select f_id, s_id, case when min(cast(date_id as timestamp)) then 1 else 0 end as new_column from test_sc group by f_id,s_id.
再加上还有其他条件,如果date_col为null,则采用col_e ...如果col_e = r则为1作为新的new_col,如果col_e为null,则采用col_f ..if col_f具有最低的值..像明智的6个条件。 但与此同时date_col。
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 |
+-----+--------+------------+------------+
就第一个问题而言,您可以尝试以下操作:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.