1

我的查询目标是计算每个单独贷款标识符的原始贷款余额。但是,我使用的数据多次使用每个贷款标识符来显示不同月份的当前实际贷款余额。因此,当我尝试计算原始贷款余额时,它会在每次出现贷款标识符时添加原始贷款余额。我只想为每个贷款标识符隔离一个原始贷款余额,但我在这样做时遇到了麻烦。我最初的想法是使用贷款独特特征的 where 子句过滤数据。例如,过滤仅一个月报告期的数据。但是,每月报告期来自“Performance_2011Q4”数据,在过滤“原始未付本金余额”时不能作为 where 子句添加。总采集文件”。我试图加入这两个表,但我在尝试过滤搜索时遇到了麻烦。有谁知道如何消除列表中的重复项,并且每个贷款标识符只计算一个“原始未付本金余额”?感谢您的帮助,如果您需要我澄清,请告诉我。我的代码发布在下面,带有无法绑定的“where”子句。

SQL Server 2012

 SELECT All a.[Loan Identifier]
          ,[Monthly Reporting Period]
          ,[Servicer Name]
          ,[Current Interest Rate]
          ,[Current Actual Unpaid Principal Balance]  
          ,[Loan Age]
          ,[Remaining Months to Legal Maturity]
          ,[Adjusted Remaining Months to Maturity]
          ,[Maturity Date]
          ,b.[ORIGINAL UNPAID PRINCIPAL BALANCE (UPB)]
          ,[Zero Balance Code]
          ,[Zero Balance Effective Date]

            From dbo.Performance_2011Q4 a
      Join dbo.TotalAcquisition b On a.[Loan Identifier] = b. [Loan Identifier]


      Select (sum(convert (float, (dbo.[TotalAcquisition].[ORIGINAL UNPAID PRINCIPAL BALANCE (UPB)])))) from dbo.TotalAcquisition 

 Where dbo.Performance_2011Q4.[Monthly Reporting Period] = '03/01/2013'
4

4 回答 4

3

在 Where 子句中使用子查询来过滤除每个贷款标识符的最早记录之外的所有记录

Select * From dbo.Performance_2011Q4 a
   Join dbo.TotalAcquisition b 
       On a.[Loan Identifier] = b. [Loan Identifier]
Where  [Monthly Reporting Period] = 
   (Select Min([Monthly Reporting Period])
    From dbo.Performance_2011Q4 
    Where [Loan Identifier] = a.[Loan Identifier])
于 2013-07-18T13:25:09.020 回答
2

在样本数据方面,您没有给我们太多帮助,所以我对您的数据做出了一些假设。我的假设是,尽管您在 TotalAcquisition 中有多个记录,但对于给定的贷款标识符,原始未付本金余额始终相同。如果是这样,这样的事情应该可以工作......

SELECT DISTINCT [Loan Identifier], [ORIGINAL UNPAID PRINCIPAL BALANCE (UPB)] FROM TotalAcquisition

如果这不是您要查找的内容,请向我们提供更多信息,例如每个表中针对一个负载 ID 的示例行。

于 2013-07-18T13:23:13.397 回答
1

如果您只想从查询中消除重复的行,您可以使用
DISTINCT命令。

于 2013-07-18T13:23:44.987 回答
0

您可以使用简单的 CTE 来消除重复项,只需对查询进行非常小的更改;

WITH cte AS (
    SELECT DISTINCT [Loan Identifier], [ORIGINAL UNPAID PRINCIPAL BALANCE (UPB)]
    FROM dbo.TotalAcquisition
)
SELECT All a.[Loan Identifier]
         ,[Monthly Reporting Period]
         ,[Servicer Name]
         ,[Current Interest Rate]
         ,[Current Actual Unpaid Principal Balance]  
         ,[Loan Age]
         ,[Remaining Months to Legal Maturity]
         ,[Adjusted Remaining Months to Maturity]
         ,[Maturity Date]
         ,b.[ORIGINAL UNPAID PRINCIPAL BALANCE (UPB)]
         ,[Zero Balance Code]
         ,[Zero Balance Effective Date]
FROM dbo.Performance_2011Q4 a
JOIN cte b 
  ON a.[Loan Identifier] = b.[Loan Identifier]
于 2013-07-18T14:55:15.130 回答