2011-06-16 25 views
0
SELECT ReviewMain.LoanID AS [Loan ID], ReviewMain.Asofdate AS [As of Date], 
    (SELECT CreditRating FROM tblReviewScalars AS Review 
    WHERE (Review.AsOfDate = (SELECT Max(AsOfDate) FROM tblReviewScalars 
          WHERE AsOfDate<#4/19/2011#)) 
    AND (Review.LoanID=ReviewMain.LoanID) 
    AND (Review.Asofdate=ReviewMain.Asofdate)) 
    AS [CreditRatingAt prior AsOfDate], 
FROM tblReportVectors AS ReportMain INNER JOIN 
    tblReviewScalars AS ReviewMain ON (ReportMain.LoanID = ReviewMain.LoanID) 
           AND (ReportMain.AsOfDate = ReviewMain.AsOfDate) 
WHERE (ReviewMain.Asofdate= DateValue(FunAsofdate())) 
GROUP BY ReviewMain.LoanID, ReviewMain.Asofdate; 

我有外部查詢&內查詢我得到的答案兩種,但是當我在內部查詢寫(Review.LoanID=ReviewMain.LoanID) AND (Review.Asofdate=ReviewMain.Asofdate)這個我得到空值,但actul答案是對企業資信爲CCC-。是內部查詢的任何解決方案。問題在上面的查詢內部查詢

+1

您的查詢格式非常糟糕,我甚至不認爲有可能理解它。我試過了,我所能得到的只是一個查詢,它在語法上不正確。 – 2011-06-16 09:39:02

回答

0

此子查詢:

(SELECT Max(AsOfDate) FROM tblReviewScalars 
WHERE AsOfDate<#4/19/2011#) 

早於2011年4月19日返回最大AsOfDate爲ALL貸款,作爲當前行中不是最大AsOfDate的貸款。您需要將上面的子查詢改成這樣:

(SELECT Max(AsOfDate) FROM tblReviewScalars AS MaxPrior 
WHERE MaxPrior.AsOfDate<#4/19/2011# 
    AND MaxPrior.LoanID=ReviewMain.LoanID) 

此外,您還需要得到就行AS [CreditRatingAt prior AsOfDate],擺脫後面的逗號,讓您有語法正確的SQL。