我有与其相关的不同代码和日期的项目。对于代码P和L,我想将与代码关联的最小日期作为新列返回。对于代码D,我想将最大日期作为新列返回。我的数据如下:
Item Code Date
ABC P 11/24/2017 13:01
ABC L 11/24/2017 16:30
ABC P 11/25/2017 12:30
ABC L 11/25/2017 20:24
ABC D 11/26/2017 21:34
ABC D 11/26/2017 23:16
ABD P 10/5/2017 9:30
ABD L 10/5/2017 13:23
ABD L 10/6/2017 3:04
ABD D 10/7/2017 8:31
期望的结果是:
Item Code_P Code_L Code_D
ABC 11/24/2017 13:01 11/24/2017 16:30 11/26/2017 23:16
ABD 10/5/2017 9:30 10/5/2017 13:23 10/7/2017 8:31
因此每个项目都有一行,代码P和L显示最小值,代码D具有最大值。任何想法如何去做?我正在使用Teradata。谢谢!
答案 0 :(得分:3)
只需使用条件聚合:
select item,
max(case when code = 'P' then date end) as p_date,
max(case when code = 'L' then date end) as l_date,
max(case when code = 'D' then date end) as s_date
from t
group by item;