Возникают проблемы с получением набора данных для возврата с одной датой для каждого клиента в запросе.
Требования:
- Для пользователя * 1006 должна быть указана последняя дата транзакции для каждого списка клиентов*
- Потребуется возможность запуска через EXEC
Текущий запрос:
SELECT
c.client_uno
, c.client_code
, c.client_name
, c.open_date
into #AttyClnt
from hbm_client c
join hbm_persnl p on c.resp_empl_uno = p.empl_uno
where p.login = @login
and c.status_code = 'C'
select
ba.payr_client_uno as client_uno
, max(ba.tran_date) as tran_date
from blt_bill_amt ba
left outer join #AttyClnt ac on ba.payr_client_uno = ac.client_uno
where ba.tran_type IN ('RA', 'CR')
group by ba.payr_client_uno
В настоящее время этот запрос будет производить не менее 1 строки на клиента с датой,проблема состоит в том, что есть некоторые клиенты, у которых будет от 2 до 10 дат, связанных с ними, увеличивая возвращаемую таблицу до 30000 строк вместо идеальных 246 строк или меньше.
Когда я пытаюсь выполнить max (tran_uno)чтобы получить самый последний номер транзакции, я получаю тот же результат, у некоторых есть 1 значение, а у других несколько значений.
На большей картинке есть 4 других запроса, выполняемых с другими частями, я включил только те части, которыеотносятся к вопросу.
Редактировать (2011-10-14 @ 13:45 PM):
select
ba.payr_client_uno as client_uno
, max(ba.row_uno) as row_uno
into #Bills
from blt_bill_amt ba
inner join hbm_matter m on ba.matter_uno = m.matter_uno
inner join hbm_client c on m.client_uno = c.client_uno
inner join hbm_persnl p on c.resp_empl_uno = p.empl_uno
where p.login = @login
and c.status_code = 'C'
and ba.tran_type in ('CR', 'RA')
group by ba.payr_client_uno
order by ba.payr_client_uno
--Obtain list of Transaction Date and Amount for the Transaction
select
b.client_uno
, ba.tran_date
, ba.tc_total_amt
from blt_bill_amt ba
inner join #Bills b on ba.row_uno = b.row_uno
Не совсем уверен, что происходит, но, кажется, тТаблицы темпов не действовали вообще.В идеале у меня было бы 246 строк данных, но с помощью предыдущего синтаксиса запроса он получал бы от 400-5000 строк данных, очевидно, дублирования данных.