2017-08-08 33 views
-3

我有一個訪問表,它具有從20100131開始的季度定價數據,並繼續爲20100430,20100731 .... 20170131,20170430.對於每個定價日期,都有很多貸款。一些貸款留在投資組合中,一些貸款被刪除,一些在每個定價期間添加。我想找到所有時期存在的貸款清單,並查看每個時期的價格。所以我有「Loan_Number」字段和「Price_Date」字段。我想找到所有價格日期點中存在的貸款編號。我很感激幫助。訪問多個日期的條目

謝謝!

+0

在給我們打電話之前,你必須先做一點功課。 – Gustav

回答

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);

要知道這些類型的查詢可以進行非常緩慢,具有非常大的數據集可能是不實際的。