【问题标题】:Oracle overlapping datesOracle 重叠日期
【发布时间】:2014-03-14 09:08:53
【问题描述】:

甲骨文 10g

有两个支付图:

OPER_ID  PAYDATE
1        09.12.2013
1        13.01.2014
1        08.02.2014
1        11.03.2014
1        08.04.2014
...................
1        07.11.2018
2        08.04.2014
2        08.05.2014
2        09.06.2014

在某些情况下,可能会有更多图表。我怎样才能重叠这个图,所以第一个在第二个开始时结束?像这样的:

OPER_ID  PAYDATE
1        09.12.2013
1        13.01.2014
1        08.02.2014
1        11.03.2014  
2        08.04.2014
2        08.05.2014
2        09.06.2014

在帮助中,我列出了操作日期:

OPER_ID  OPER_DATE
1        07.11.2013
2        11.03.2014

更新

  1. 图表在一个表中

  2. 图表中的日期大多相同

【问题讨论】:

  • 您只是想按付款日期对数据进行排序吗?类似... select oper_id, paydate from order by paydate;

标签: oracle date overlap overlapping


【解决方案1】:

假设您的付款图表存储在GRAPH1GRAPH2 表中,我可以提供解决方案:

SELECT 
 x.paydate,
 g1.operid as g1_operid,
 g2.operid as g2_operid
FROM (
      SELECT 
         t.paydate
      FROM (SELECT paydate FROM graph1 UNION ALL SELECT paydate FROM graph2) t
      GROUP BY t.paydate
) x
LEFT JOIN graph1 g1 ON g1.paydate = x.paydate
LEFT JOIN graph1 g2 ON g2.paydate = x.paydate
ORDER BY x.paydate

想法是在两个图表中选择一组唯一的日期,然后按付款日期连接图表。

【讨论】:

  • 我已经更新了我的问题。只有一张带图表的表格。并且图表中的日期不是唯一的,在大多数情况下它们是相同的
  • 好,然后把graph2改成graph1,把(SELECT paydate FROM graph1 UNION ALL SELECT paydate FROM graph2)改成graph1,就搞定了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
相关资源
最近更新 更多