下面需要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)还有两个不同的时间戳。我正在寻找参考号和它们的时间戳差异。谢谢戈登的帮助。我能够得到我想要的结果。