Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL查询分组_Sql_Oracle - Fatal编程技术网

Oracle SQL查询分组

Oracle SQL查询分组,sql,oracle,Sql,Oracle,我有以下数据 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

我有以下数据

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分组,但不太了解如何获得所需的输出。请帮助

当您尝试展平数据时,它被称为轴。如果您使用的是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;

搜索
条件聚合
并选择一个DBMS,而不是标记所有DBMS。