2017-05-24 36 views
0

我有与它们相关的不同代码和日期的项目。对于代码P和L,我希望将与代码关联的最短日期作为新列返回。对于代码D,我想将最大日期作为新列返回。我的数据看起来像这样:SQL-移调数据,每组有一个值

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。谢谢!

回答

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; 
+0

啊谢谢!这工作。 – user3910919