2011-06-16 3 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; 

dans la requête ci-dessus i ont requête externe & requête interne i obtenir une réponse à la fois, mais quand j'écris ceci dans (Review.LoanID=ReviewMain.LoanID) AND (Review.Asofdate=ReviewMain.Asofdate) requête interne i obtenir la valeur à blanc mais actul réponse est pour CreditRating est CCC-. est toute solution sur requête interne.problème dans la requête intérieure

+1

Votre requête est si mal formatée que je ne pense même pas qu'il soit possible de la comprendre. J'ai essayé et tout ce que j'ai pu obtenir était une requête qui n'était pas syntaxiquement correcte de toute façon. –

Répondre

0

Cette sous-requête:

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

retourne au maximum AsOfDate avant 4/19/2011 pour TOUS prêts, par opposition au maximum AsOfDate pour le prêt de la ligne actuelle. Vous devez changer la sous-requête ci-dessus à ceci:

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

En outre, vous devez vous débarrasser de la virgule de fin sur la ligne AS [CreditRatingAt prior AsOfDate], de sorte que vous avez SQL syntaxiquement correct.