我正在尝试加入两张 table ,其中一个人可以拥有不止一张卡,其中一些可能会被取消。
例如:
**Customer Card**
Cust ID | Cust Acct | Card No | Join Date | Cancel Date
1 | 10001 | E100001 | 20150501 | 20160101
1 | 10001 | E100002 | 20151001 | 0
2 | 10002 | E100003 | 20150101 | 20160601
3 | 10003 | E100004 | 20150201 | 0
4 | 10003 | E100005 | 20160101 | 0
**Customer Account**
Cust ID | Cust Acct
1 | 10001
2 | 10002
3 | 10003
基本上,我想显示带有第一个加入卡号的所有帐户,即使卡已被取消。如果第一张卡被取消,则需要显示第二张卡的加入日期。
预期结果:
Cust ID | Cust Acct | Card No | Join Date | Cancel Date
1 | 10001 | E100002 | 20151001 | 0
2 | 10002 | E100003 | 20151001 | 20160601
3 | 10003 | E100004 | 20150201 | 0
感谢您的帮助!有什么想法吗?
最佳答案
一种方法使用row_number()
:
select cc.*, ca.CardNo, ca.JoinDate, ca.CancelDate
from customercard cc join
(select ca.*,
row_number() over (partition by custid order by joindate asc) as seqnum
from customeraccount ca
) ca
on cc.custid = ca.custid and seqnum = 1;
关于sql - oracle加入一对多关系,返回第一个加入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40173045/