具有4条记录的表视图如果我想选择第2条和第3条记录,下面的查询是否有效?
select driver_name, driver_city, driver_email, max(due_date), max(completion_date) from TableX group by driver_name,driver_city,driver_email
2vuwiymt1#
由于日期值的格式不好,您需要首先将值转换为日期,然后应用其他逻辑。现在请检查我的更新脚本-问题:完成日期列中的值是字符串。结果,max返回的是字符串,而不是日期。“完成日期”列中没有年份值。因此,我只是在值中添加了'2020',以便正确生成日期值。最后,增加的年份对产量没有影响。这是考虑到所有的DTAE是从单一的(任何)年只。但如果在其他列中有年份值,请避免添加静态“2020”,并使用该列中的值在此处查看演示
SELECT A.* FROM TableX A INNER JOIN ( SELECT driver_email, MAX(STR_TO_DATE( CONCAT( REPLACE( REPLACE(REPLACE(completion_date,'rd ','-'), 'st ', '-' ), 'th ', '-' ),'-2020') ,'%d-%b-%Y')) completion_date FROM TableX GROUP BY driver_email ) B ON A.driver_email = B.driver_email AND STR_TO_DATE( CONCAT( REPLACE( REPLACE(REPLACE(A.completion_date,'rd ','-'), 'st ', '-' ), 'th ', '-' ),'-2020') ,'%d-%b-%Y') = B.completion_date
g52tjvyc2#
它将返回第2和第4条记录作为结果。因为第三条记录在duedate列中有空值
2条答案
按热度按时间2vuwiymt1#
由于日期值的格式不好,您需要首先将值转换为日期,然后应用其他逻辑。现在请检查我的更新脚本-
问题:
完成日期列中的值是字符串。结果,max返回的是字符串,而不是日期。
“完成日期”列中没有年份值。因此,我只是在值中添加了'2020',以便正确生成日期值。最后,增加的年份对产量没有影响。这是考虑到所有的DTAE是从单一的(任何)年只。
但如果在其他列中有年份值,请避免添加静态“2020”,并使用该列中的值
在此处查看演示
g52tjvyc2#
它将返回第2和第4条记录作为结果。因为第三条记录在duedate列中有空值