在查詢中獲取數據集時每個客戶端返回一個日期時出現問題。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