2014年2月12日 星期三

利用MSSQL做票齡分析

票齡分析是在會計中來分析支票時使用的功能,例如說我在30天內會有那些支票可以使用

詳細做用請問你身邊的學會計的朋友 (= =)||


*********************************小花分割線************************************

先來看一下程式

--設定起始變數
declare @sday datetime
set @sday =開始日期
declare @eday datetime
set @eday =結束日期
declare @aday int
set @aday = DATEDIFF (mm,CONVERT(datetime,@sday),CONVERT(datetime,@eday))+1
declare @i int
set @i = 0
declare @fday datetime
declare @tday datetime

--建立一個暫存的資料表
create table #stack
(bid varchar(38) NOT NULL,
days varchar(38) NOT NULL)

--這邊是建立日期區間以每30天為一個間隔
while @aday <> 0
begin
Set @fday = dateadd(month,@i,@sday)
SET @tday = dateadd(month,@i+1,@sday)
INSERT INTO #stack
select a.bid,days= (@i * 30) + 30
from 會計使用的資料表 a
where @fday <= a.expire_date and @tday > a.expire_date
set @aday = @aday - 1
set @i = @i +1
end

--這裡就是基礎的select的查詢語法,列出你所希望展示的欄位值
SELECT a.bid,a.check_status,a.getchk_date,a.expire_date,a.osum,a.fcash_date ,
b.bid as cust,b.custname ,
c.bid as vendid,c.vendname ,
    e.bid as bank,e.bankname ,f.* ,
        case when a.check_status = 0 THEN N'未兌現'
        when a.check_status = 1 THEN N'托收中'
        when a.check_status = 2 THEN N'兌現'
        when a.check_status = 3 THEN N'退票'
        when a.check_status = 4 THEN N'作廢'
        when a.check_status = 5 THEN N'轉付帳款'
        END as check_name
        FROM 與會計資料相關的所有資料表
            inner join #stack f on a.bid = f.bid

~~~~~~~~~~~~~~~~~~~~~~~~波浪分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上SQL語法確認可以查詢、列出所希望列出的數據後,將語法放入iReport中產出報表


感謝您的閱讀

沒有留言:

張貼留言