下面需要Oracle SQL查询帮助

下面需要Oracle SQL查询帮助,sql,oracle,Sql,Oracle,我有如下表格: ID ref num type time stamp ------------------------------ 1 456 X Time 1 2 456 Y updated Timestamp 3 678 X Time 3 4 678 Y updated timestamp 我需要帮助建立查询,查询结果如下: ref num Type Time difference

我有如下表格:

ID  ref num  type   time stamp
------------------------------
1   456      X      Time 1
2   456      Y      updated Timestamp
3   678      X      Time 3
4   678      Y      updated timestamp
我需要帮助建立查询,查询结果如下:

ref num    Type Time difference
------------------------------------
456         X   (Timestamp diff between Type X and Type Y for a ref num)
678         Y   (Timestamp diff between Type X and Type Y for a ref num)

一种解决方案是使用相关子查询来获取相应的时间戳值:

select t1.id, 
       t1.ref_num,
       t1.type, 
       t1.time_stamp - (select max(t2.time_stamp) from the_table t2 where t2.ref_num = t1.ref_num and t2.type = 'Y') as diff
from the_table t1
where t1.type = 'X';

max()
只是一种预防措施,以防有多行具有相同的引用编号和
类型='Y'
您可以通过条件聚合来实现这一点:

select t.refnum,
       (max(case when type = 'X' then timestamp end) -
        max(case when type = 'Y' then timestamp end)
       ) as TypeTimeStampDiff
from t
group by t.refnum;

有趣,但根据提供的信息,我所了解的是

select t.Ref_Num,
   (case
      when Rownum mod 2 = 0 then
       'Y'
      else
       'X'
    end) type,
   max(case when type = 'Y' then t.time_stamp end) - 
       min(case when type = 'X' then t.time_stamp end)) as Typetimestampdiff
来自表\u Name t
按t.Refnum分组

到目前为止,除了问一个问题之外,你还尝试了什么?甚至规格也很模糊。如果refnum 456被更新了更多次呢?你需要第一次和最后一次发生之间的差异吗?或者仅仅是第一个类型为
X
和最后一个类型为
Y
之间的差异?还是反过来?请阅读,并考虑自己的帮助,并学会指定问题和提问。结果包含Y类型为678 RefnNUM,但X类型为456 ReqnNUM。结果集中的类型是什么原因?它在另一个参考号上的表现如何?@Ramblin'Man:见问题的标题。佩特卡:每个参考号在表格中只有两个条目,类型为X和Y。我基本上是在寻找参考号以及特定参考号的邮票之间的差异。马克:基本上每个参考号都有两种类型(X,Y)还有两个不同的时间戳。我正在寻找参考号和它们的时间戳差异。谢谢戈登的帮助。我能够得到我想要的结果。