2014-06-29 60 views
-1

我有這些列的表:計算天客戶有餘額爲零

TransID, CustomerID, Date, Credit, Debit, CurrentBalance 

我想知道有多少天,因爲客戶有一個明確的平衡已經過去了,因爲我不牛逼給予信貸,如果他們沒有清理其資產負債在過去的14天,

讓我們來談談一個特定的客戶:現在

TransID, CustomerID, Date,  Credit, Debit, CurrentBalance 
1  1   01/01/2014 0  50  50 
2  1   01/05/2014 50  0  0 
3  1   06/28/2014 0  100 100 

於14年6月29日他們只需1天以來的ir平衡是明確的,但如果我從CurrentBalance = 0的最後一行計算,它是超過175天

+0

你是什麼意思「平衡清晰」? –

+0

如果它是「因爲餘額爲'0'」,爲什麼你不能向有積極餘額的人發放信用? –

回答

1

從邏輯上講,上次餘額爲零是即時進行的最後一次銷售前,當餘額爲零,這可以通過出售金額等於銷售後的餘額來確定,即Debit = CurrentBalance - 只有在銷售前的餘額爲零時纔會發生這種情況。

select 
    c.id customerid, 
    coalesce(datediff(day, max(t.date), getdate()), 0) days_clear 
from customer c 
left join transaction t on t.CustomerID = c.id 
    and Debit = CurrentBalance 
group by customerid 

使用客戶表和左連接到事務表允許的情況下,當客戶從來沒有做出交易(所以他的天數爲零)。

1

這是你在找什麼?

select customerid, 
     datediff(day, max(case when balance = 0 then date end), getdate()) 
from table t 
group by customerid; 

這將返回自最近一次0餘額記錄以來的天數。

編輯:

現在我想我明白了。問題是0天平持續到2014年6月18日。在SQL Server 2012或更高版本,我們可以lead()處理這個問題:

select customerid, 
     datediff(day, max(case when balance = 0 then nextdate end), getdate()) 
from (select t.*, lead(date) over (partition by customerid order by date) as nextdate 
     from table t 
    ) t 
group by customerid; 

牛逼

+0

這會讓我回到175天,真的是他只有1天的餘額,因爲它在過去6個月內沒有任何交易 – Nathan11205