在查询中获取数据集时每个客户端返回一个日期时出现问题。TSQL - 返回最近的日期
要求:
- 必须有最近的每个客户端列表交易的日期为用户
- 将需要有通过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个与他们相关的日期,将返回表格扩大到大约30,000行,而不是理想化的246行或更少。
当我尝试使用max(tran_uno)来获取最近的交易编号时,我得到了相同的结果,其中一些有1值,而其他值有多个值。
更大的图片有其他4个其他部分正在执行其他部分,我只包括了与问题有关的部分。
编辑(2011-10-14 @ 1: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行数据,显然是数据重复。
我不认为这个问题是在这里。您在此处展示的内容只会为每个client_uno返回一个日期,因为您按该值进行分组。客户端名称中是否可以有空格,这看起来像是同一个客户端正在返回多个日期? –
client_uno是唯一的'int'值,因此没有空格或错误值。该值在应用程序的后端进行控制。 – GoldBishop
另一个需要注意的是,在某些情况下,当查看结果数据集时,某些client_uno具有CR&RA记录,而其他一些则具有双CR或RA记录,其余为单CR或RA值。现在你看到了问题,它并不总是返回一个价值回来,我可以把问题挂钩。除了我查询的client_uno之外,更多的问题不是很一致。 – GoldBishop