1.找到每个pkey中最大的一个。 2将日期时间“ 01-24-2020 10:12:12 am”转换为2020年1月24日

时间:2020-07-15 09:34:21

标签: sql teradata

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
  1. 将日期时间“ 01-24-2020 10:12:12 am”转换为2020年1月24日

3 个答案:

答案 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)