我有以下数据
Name ID Action Action_Date
A123 234 ADD 21/05/2016
A123 234 DELETE 25/05/2016
A124 235 ADD 21/05/2016
A125 236 DELETE 25/05/2016
现在我试图低于结果
Name ID Date_Added Dated_Deleted
A123 234 21/05/2016 25/05/2016
A124 235 21/05/2016 NULL
A125 236 NULL 25/05/2016
我知道我需要按名称和ID分组,但不太了解如何获得所需的输出。请帮忙
答案 0 :(得分:2)
当您尝试压缩数据时,它被称为PIVOT。如果您使用的是Oracle,那么可以使用该名称的关键字,但我更喜欢有条件聚合的旧方法(在评论中由@Prdp提及)。代码将非常简单。
SELECT t.name
,t.id
,MAX(CASE WHEN t.action = 'ADD' THEN t.action_date END) AS date_added
,MAX(CASE WHEN t.action = 'DELETE' THEN t.action_date END) AS date_deleted
FROM your_table t
GROUP BY t.name
,t.id;