我有一个访问表,其季度定价数据从20100131开始,一直持续到20100430,20100731 .... 20170131,20170430。每个定价日期都有很多贷款。一些贷款留在投资组合中,一些贷款被移除,一些贷款在每个定价期间增加。我想找到所有期间存在的贷款清单,并查看每个期间的价格。所以我有" Loan_Number"字段和" Price_Date"领域。我想找到所有价格日期点中存在的贷款号码。我很感激帮助。
谢谢!
答案 0 :(得分:0)
很高兴看到你的努力,但我对挑战很感兴趣所以这就是我所完成的。
1 - 需要贷款编号和日期值的所有可能组合的数据集。因此,如果您有一个LoanNumbers表和一个Periods表,请创建一个名为AllPairs的笛卡尔查询:
SELECT LoanNumbers.Loan_Number, Periods.Price_Date FROM LoanNumbers, Periods;
如果您没有这些表,请生成带有查询的数据集,假设数据表每个贷款号至少有一条记录,并且每个期间至少有一条记录:
SELECT DISTINCT Table1.Price_Date FROM Table1;
SELECT DISTINCT Table1.Loan_Number FROM Table1;
2 - 将AllPairs加入到数据表中,找到无与伦比的'查询称为LoanNoPeriod:
SELECT AllPairs.Loan_Number, AllPairs.Price_Date, Table1.Loan_Number, Table1.Price_Date
FROM AllPairs LEFT JOIN Table1 ON (AllPairs.Price_Date = Table1.Price_Date) AND (AllPairs.Loan_Number = Table1.Loan_Number)
WHERE (((Table1.Price_Date) Is Null));
3 - 最终查询:
SELECT * FROM Table1 WHERE Loan_Number NOT IN (SELECT AllPairs.Loan_Number FROM LoanNoPeriod);
请注意,这些类型的查询执行速度非常慢,而且非常大的数据集可能不实用。