2013-07-18 2 views
1

Моя цель для запроса - рассчитать первоначальный баланс по кредитам каждого отдельного идентификатора кредита. Тем не менее, данные, которые я использую, используют каждый идентификатор кредита несколько раз, чтобы показать текущий фактический остаток по ссуде с разных месяцев. Поэтому, когда я пытаюсь рассчитать первоначальный остаток по ссуде, он добавляет исходный баланс кредита каждый раз, когда появляется идентификатор кредита. Я хочу просто выделить один первоначальный баланс кредита на идентификатор кредита, но у меня возникают проблемы с этим. Моя первоначальная идея состояла в том, чтобы отфильтровать данные, используя предложение where по уникальной характеристике кредита. Например, фильтрация данных за один месячный отчетный период. Тем не менее, ежемесячный отчетный период исходит из данных «Performance_2011Q4» и не может быть добавлен в качестве предложения where при фильтрации «Оригинального неоплаченного основного баланса» для «Total Acquisition file». Я попытался присоединиться к двум таблицам, но я не пытаясь отфильтровать поиск. Кто-нибудь знает, как удалить дубликаты в списке и рассчитать только один «Оригинальный неоплачиваемый основной баланс» для каждого идентификатора кредита? Спасибо за вашу помощь и дайте мне знать, если вам нужно, чтобы я уточнил. код размещен ниже с «где» оговоркой, что не может быть связан.Устранение дубликатов .. и больше удовольствия

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' 

ответ

2

Вы не дали нам много идти дальше в плане выборки данных, так что я m сделать некоторый assump о ваших данных. Мое предположение заключается в том, что, хотя у вас есть несколько записей в TotalAcquisition, первоначальный неоплаченный основной остаток всегда одинаковый для данного идентификатора кредита. Если да, то, как это должно работать ...

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

Если это не то, что вы ищете, дайте нам более подробную информацию, как выборки строк из каждой таблицы для одной загрузки идентификатора.

+0

Да, спасибо за разъяснение. Первоначальный неоплаченный основной остаток одинаковый для данного идентификатора кредита – user2501239

1

Если вы хотите удалить повторяющиеся строки из вашего запроса, вы можете использовать команду
DISTINCT.

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]) 
0

Вы можете использовать простой КТР для устранения дубликатов с очень незначительными изменениями в запросе;

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] 
Смежные вопросы