2017-02-20 16 views
2

У меня есть два разных источника информации, и я пытаюсь выйти за них замуж, чтобы получить информацию о клиенте и их последнем счете. Мне удалось получить подробную информацию о каждом клиенте и о дате окончания срока их действия, но я не уверен, как я могу получить информацию из связанного счета. У меня есть следующий запрос:Возврат сведений о последнем счете, связанном с пользователем

SELECT new_mprnnumber, 
     new_customernumber, 
     MAX(b.billingPeriodEndDate) as 'Billed up to date' 
FROM [CRM].[crm4_MSCRM].[dbo].[AccountExtensionBase] as a 
inner join Billing.dbo.bill as b 
    on a.new_mprnnumber = b.MPRN 
where new_accountstage = 7 
and new_accounttype = 2 
group by new_mprnnumber, 
     new_customernumber 
GO 

Законопроект имеет поля, как причитающейся и т.д., но я только хочу, чтобы вернуть детали из тех, с максимальной от счета, любая помощь будет принята с благодарностью

+0

Пометьте используемые вами dbms. – jarlh

+0

Я использую SQL-сервер – Jay

ответ

2

Используйте КТР с row_number()

with CTE as 
(
select a.new_mprnnumber, 
     a.new_customernumber, 
     b.*, 
     row_number() 
     over (partition by new_customernumber -- add additional partitions as you would group bys 
       order by billingPeriodEndDate desc) as r_ord 
from AccountExtensionBase a 
inner join bill b 
    on a.new_mprnnumber = b.MPRN 
where new_accountstage = 7 
and new_accounttype = 2 
) 
select * 
from CTE 
where r_ord = 1 
1

Поместите свой запрос в КТР, а затем ссылку на стол счета:

WITH CTE AS (
SELECT new_mprnnumber, 
    new_customernumber, 
    MAX(b.billingPeriodEndDate) as MaxBillDate 
FROM [CRM].[crm4_MSCRM].[dbo].[AccountExtensionBase] as a 
inner join Billing.dbo.bill as b 
    on a.new_mprnnumber = b.MPRN 
where new_accountstage = 7 
and new_accounttype = 2 
group by new_mprnnumber, 
     new_customernumber 
) 
SELECT b.* 
FROM CTE c 
INNER JOIN Billing.dbo.bill b ON c.MaxBillDate = b.billingPeriodEndDate AND c.new_mprnnumber = b.MPRN 
Смежные вопросы