1。查找每个pkey中最大的日期
PKEY COL1 COL2 DATE1
1 APPLE1 ORANGE1 01-Jun-20
1 APPLE2 ORANGE2 02-Jun-20
1 APPLE3 ORANGE3 03-Jun-20
1 APPLE4 ORANGE4 04-Jun-20
2 COCONUT1 MANGO1 05-Jun-20
2 COCONUT2 MANGO2 06-Jun-20
2 COCONUT2 MANGO2 07-Jun-20
3 MELON1 LEMON1 08-Jun-20
3 MELON2 LEMON2 09-Jun-20
3 MELON3 LEMON3 10-Jun-20
3 MELON4 LEMON4 11-Jun-20
4 WALNUT1 HAZELNUT1 12-Jun-20
4 WALNUT2 HAZELNUT2 13-Jun-20
4 WALNUT3 HAZELNUT3 14-Jun-20
答案 0 :(得分:0)
您可以执行以下操作: 请注意,正在使用等级的概念。
SET @intRank := 1;
SET @intPrevPKEY := -1;
SELECT PKEY, COL1, COL2, DATE1
FROM
(
SELECT *,
IF(@intPrevPKEY = PKEY, @intRank := @intRank + 1, @intRank :=1) AS rank,
@intPrevPkey := PKEY
FROM your_table
ORDER BY PKEY, STR_TO_DATE(DATE1, '%d-%M-%y') DESC
) AS inner_table
WHERE inner_table.rank = 1
答案 1 :(得分:0)
这个简单的查询应该可以工作。
Select pkey,max(STR_TO_DATE(DATE1, '%d-%M-%y')) as MAX_DATE from TABLE_NAME group by pkey;
答案 2 :(得分:0)
假设每个pkey中的最大日期并不意味着简单的MAX,而您想要具有最大日期的行:
select *
from tab
qualify
rank()
over (partition by PKEY
order by DATE1 desc) = 1
要将字符串强制转换为日期时间,可以应用qa FORMAT:
cast(cast(col as timestamp format 'mm-dd-yyyyBhh:mi:ssBt') as date)