有人能帮忙简化下面的问题吗。它的成本显示为58。
b、 duedate和b.tid是复合键。a、 tid是表1和表2之间的主键和外键。
SELECT test.tID, test.sor_acct_id, test.pmt, test.status FROM ct.tab1 a,
(SELECT a.tID, a.sor_acct_id, b.dueDate, b.amt, b.status, a.pmt,
Row_number() OVER ( partition BY a.tID ORDER BY b.dueDate DESC) AS rn
FROM ct.tab1 a
INNER JOIN ct.tab2 b
ON a.tID = b.tID
WHERE a.tID IN (SELECT a.tID
FROM ct.tab1 a
INNER JOIN
ct.tab2 b
ON a.tID =
b.tID
WHERE a.status = 'E'
AND a.pmt IS NOT NULL
AND a.pmt <> '{}'
AND b.dueDate > CURRENT_DATE - 4
AND b.dueDate < CURRENT_DATE)
AND b.dueDate > CURRENT_DATE - 1
) test WHERE rn = 1
AND test.status IN ( 'X', 'Z' )
AND a.tID = test.tID
2条答案
按热度按时间cyvaqqii1#
tID
是tab1的主键。所以当你说你在找tab1
记录tID
在一组tab1
状态为e的记录,你也可以简单地说:我在找tab1
状态为e的记录。您的查询所做的是:全部显示
tab1
最后的记录tab2
提供的状态。。。这个
tab1
pmt不为null且不是{}这个
tab1
状态为e决赛
tab2
状态为x或z决赛
tab2
状态是今天或将来到期的至少存在一个
tab2
最近三天内到期的tab1
记录查询:
sc4hvdpw2#
也许你会改变:
分为: