我在SQL中有一个如下所示的表
我想在PR创建日期或AC创建日期字段中选择具有最早日期的行.所以在这种情况下,我想要这两个记录.
我知道我可以写
Select email, min(PR_create_date) from table
group by email
Run Code Online (Sandbox Code Playgroud)
但是,这只会在PR_create_date列中找到最小日期.如何在PR_create_date或AC_create_date列中找到最小日期?
您可以使用
SELECT email,
MIN(least(pr_create_date, ac_create_date))
FROM my_table
GROUP BY email
Run Code Online (Sandbox Code Playgroud)
函数least返回其参数的最小值.
但如果其中一个论点是NULL结果也是NULL如此.因此,您要编写一些逻辑来处理空值,具体取决于业务逻辑中必须如何处理空值:例如,您可以在远期或将来使用"特殊日期"将空值替换为
SELECT email,
MIN( least( ifnull(pr_create_date, DATE '2999-12-31'),
ifnull(ac_create_date, DATE '2999-12-31')) )
FROM my_table
GROUP BY email
Run Code Online (Sandbox Code Playgroud)
但是在最简单的情况下,当日期被排除时(即在每一行中,其中一个日期是空的),它足以写入
SELECT email,
MIN( ifnull(pr_create_date, ac_create_date) )
FROM my_table
GROUP BY email
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |