【发布时间】:2017-05-25 22:54:36
【问题描述】:
我有一个如下的 sql 查询:
select
,c.customer_leg1
,d.mid
,c.previous_customer_leg1
,c.creation_date
,c.end_date
,c.cid
from table1 c
JOIN table2 d
ON c.cid = d.cid
where c.cid = '1234'
给出以下输出:
customer_leg1 | previous_customer_leg1 | creation_data | end_date | cid
4092 | 1888 | 05/06/17 | 05/07/17 | 735
8915 | 4092 | 05/06/17 | 05/08/17 | 735
我想添加一个新列,以便对于每个customer_leg1,我们发现在previous_customer_leg1 中应该将该行的"end_date" 放在该列中。
例如:在上述输出的第 1 行中,customer_leg1 是 4092,这可以在 previous_customer_leg1 的第 2 行中找到,因此在第 1 行中,这个 new_column 应该包含 05/08/17。对于那些 customer_leg1 与 previous_customer_leg1 不匹配的情况,它应该为 NULL。我想我可以为此使用分区和滞后功能,但我对这些不是很清楚。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你一点也不亲近。为什么你认为你需要
lag()和partition?您需要的是自联接,而不是分析功能。最好只是陈述您的问题(就像您所做的那样);不要在问题陈述中包括如何解决它。 (你没有,你只是通过你给的标题来给人这种印象。) -
您发布的查询没有多大意义。你选择的所有列都来自
table1,where的条件也都是基于同一张表的,你为什么要加入table2? -
因为实际查询非常庞大,而这只是我想要的要点
-
@Arman - 数据顺序的标准是什么。我的意思是什么决定了 2 个给定的行在输出中的顺序是相同的?
-
行的顺序没有标准。
标签: sql oracle lag window-functions