利用SQL遊標核對銀行對帳單與銀行日記帳

2020-11-23 中華會計網校

  核對銀行對帳單與單位銀行日記帳(以下簡稱單位日記帳)是對銀行存款審計中一項重要的步驟。通過核對銀行對帳單與單位日記帳,可以查找出未達帳項,從而為發現出租、出借帳戶、挪用公款,非法出藉資金等違紀問題提供線索。以往查找未達帳項採用的是手工逐行勾挑的方法。這種方法耗時長,準確性不高。尤其是對一些存取款業務頻繁的單位,手工核對更是顯得力不從心。而利用SQL遊標則可以快速查找未達帳項,從而取得事半功倍的效果。

  一、採集銀行對帳單和單位日記帳數據,並進行必要的整理轉換,使其對應欄位的長度、數據類型相同。如:通常銀行日記帳的支票號為銀行對帳單的憑證號的後四位,因此應對銀行對帳單的憑證號作截斷處理。Update 銀行對帳單 set 憑證號=right(憑證號,4)

  二、對應整理後的銀行對帳單和單位日記帳創建四個空表用於接收未達帳項記錄:單位已付銀行未付、單位已收銀行未收、銀行已付單位未付、銀行已收單位未收。如:

  create table 單位已付銀行未付 (憑證日期 varchar(14),摘要 nvarchar(50),支票號 nvarchar(10),借方金額 money,貸方金額 money)

  create table 單位已收銀行未收 (憑證日期 varchar(14),摘要 nvarchar(50),支票號 nvarchar(10),借方金額 money,貸方金額 money)

  create table 銀行已付單位未付 (憑證日期 varchar(14),摘要 nvarchar(50),憑證號 nvarchar(10),借方金額 money,貸方金額 money)

  create table 銀行已收單位未收 (憑證日期 varchar(14),摘要 nvarchar(50),憑證號 nvarchar(10),借方金額 money,貸方金額 money)

  三、創建遊標,將所有金額以是否有重複金額為條件分為相同金額和不同金額記錄,再做對應比較,分步篩選未達帳項:

  1、篩選單位日記帳不同金額借方有銀行對帳單貸方無的記錄

  declare cur1 cursor for select 借方金額 from 單位日記帳 where 借方金額 in (select 借方金額 from 單位日記帳 group by 借方金額 having count(借方金額)=1)

  open cur1

  declare @借方金額 money

  fetch next from cur1 into @借方金額

  while @@fetch_status=0

  begin

  if @借方金額 in (select 貸方金額 from 銀行對帳單 group by 貸方金額 having count(貸方金額)=1)

  fetch next from cur1 into @借方金額

  else

  begin

  insert into 單位已收銀行未收 select * from 單位日記帳 where 借方金額=@借方金額

  fetch next from cur1 into @借方金額

  end

  end

  close cur1

  deallocate cur1

  2、篩選單位日記帳不同金額貸方有銀行對帳單借方無的記錄

  declare cur1 cursor for select 貸方金額 from 單位日記帳 group by 貸方金額 having count(貸方金額)=1

  open cur1

  declare @貸方金額 money

  fetch next from cur1 into @貸方金額

  while @@fetch_status=0

  begin

  if @貸方金額 in (select 借方金額 from 銀行對帳單

  group by 借方金額 having count(借方金額)=1)

  fetch next from cur1 into @貸方金額

  else

  begin

  insert into 單位已付銀行未付 select * from 單位日記帳 where 貸方金額=@貸方金額

  fetch next from cur1 into @貸方金額

  end

  end

  close cur1

  deallocate cur1

  3、篩選單位日記帳相同金額借方有銀行對帳單貸方無的記錄

  declare cur1 cursor for select 借方金額,count(*) 個數 from 單位日記帳 where 借方金額0 group by 借方金額 having count(借方金額)>1

  open cur1

  declare @借方金額 money,@個數 int

  fetch next from cur1 into @借方金額,@個數

  while @@fetch_status=0

  begin

  if @個數 =(select count(*) from 銀行對帳單 where 貸方金額=@借方金額)

  fetch next from cur1 into @借方金額,@個數

  else

  begin

  insert into 單位已收銀行未收 select * from 單位日記帳 where 借方金額=@借方金額

  fetch next from cur1 into @借方金額,@個數

  end

  end

  close cur1

  deallocate cur1

  4、篩選單位日記帳相同金額貸方有銀行對帳單借方無的記錄

  declare cur1 cursor for select 貸方金額,count(*) 個數 from 單位日記帳 where 貸方金額0 group by 貸方金額 having count(借方金額)>1

  open cur1

  declare @貸方金額 money,@個數 int

  fetch next from cur1 into @貸方金額,@個數

  while @@fetch_status=0

  begin

  if @個數 =(select count(*) from 銀行對帳單 where 借方金額=@貸方金額)

  fetch next from cur1 into @貸方金額,@個數

  else

  begin

  insert into 單位已付銀行未付 select * from 單位日記帳 where 支票號 is null and 貸方金額=@貸方金額

  declare cur2 cursor for select 支票號 from 單位日記帳 where 貸方金額=@貸方金額 and 支票號 is not null

  open cur2

  declare @支票號 varchar(10)

  fetch next from cur2 into @支票號

  while @@fetch_status=0

  begin

  if @支票號 in (select 憑證號 from 銀行對帳單 where 借方金額=@貸方金額)

  fetch next from cur2 into @支票號

  else

  begin

  insert into 單位已付銀行未付 select * from 單位日記帳 where 支票號=@支票號

  fetch next from cur2 into @支票號

  end

  end

  close cur2

  deallocate cur2

  fetch next from cur1 into @貸方金額,@個數

  end

  end

  close cur1

  deallocate cur1

  5、篩選銀行對帳單不同金額借方有單位日記帳貸方無的記錄

  declare cur1 cursor for select 借方金額 from 銀行對帳單 group by 借方金額 having count(借方金額)=1

  open cur1

  declare @借方金額 money

  fetch next from cur1 into @借方金額

  while @@fetch_status=0

  begin

  if @借方金額 in (select 貸方金額 from 單位日記帳 group by 貸方金額 having count(貸方金額)=1)

  fetch next from cur1 into @借方金額

  else

  begin

  insert into 銀行已付單位未付 select * from 銀行對帳單 where 借方金額=@借方金額

  fetch next from cur1 into @借方金額

  end

  end

  close cur1

  deallocate cur1

  6、篩選銀行對帳單不同金額貸方有單位日記帳借方無的記錄

  declare cur1 cursor for select 貸方金額 from 銀行對帳單 group by 貸方金額 having count(貸方金額)=1

  open cur1

  declare @貸方金額 money

  fetch next from cur1 into @貸方金額

  while @@fetch_status=0

  begin

  if @貸方金額 in (select 借方金額 from 單位日記帳

  group by 借方金額 having count(借方金額)=1)

  fetch next from cur1 into @貸方金額

  else

  begin

  insert into 銀行已收單位未收 select * from 銀行對帳單 where 貸方金額=@貸方金額

  fetch next from cur1 into @貸方金額

  end

  end

  close cur1

  deallocate cur1

  7、篩選銀行對帳單相同金額借方有單位日記帳貸方無的記錄

  declare cur1 cursor for select 借方金額,count(*) 個數 from 銀行對帳單 where 借方金額0 group by 借方金額 having count(借方金額)>1

  open cur1

  declare @借方金額 money,@個數 int

  fetch next from cur1 into @借方金額,@個數

  while @@fetch_status=0

  begin

  if @個數 =(select count(*) from 單位日記帳 where 貸方金額=@借方金額)

  fetch next from cur1 into @借方金額,@個數

  else

  begin

  insert into 銀行已付單位未付 select * from 銀行對帳單 where 憑證號 is null and 借方金額=@借方金額

  declare cur2 cursor for select 憑證號 from 銀行對帳單 where 借方金額=@借方金額 and 憑證號 is not null

  open cur2

  declare @憑證號 varchar(10)

  fetch next from cur2 into @憑證號

  while @@fetch_status=0

  begin

  if @憑證號 in (select 支票號 from 單位日記帳 where 貸方金額=@借方金額)

  fetch next from cur2 into @憑證號

  else

  begin

  insert into 銀行已付單位未付 select * from 銀行對帳單 where 憑證號=@憑證號

  fetch next from cur2 into @憑證號

  end

  end

  close cur2

  deallocate cur2

  fetch next from cur1 into @借方金額,@個數

  end

  end

  close cur1

  deallocate cur1

  8、篩選銀行對帳單相同金額貸方有單位日記帳借方無的記錄

  declare cur1 cursor for select 貸方金額,count(*) 個數 from 銀行對帳單 where 貸方金額0 group by 貸方金額 having count(借方金額)>1

  open cur1

  declare @貸方金額 money,@個數 int

  fetch next from cur1 into @貸方金額,@個數

  while @@fetch_status=0

  begin

  if @個數 =(select count(*) from 單位日記帳 where 借方金額=@貸方金額)

  fetch next from cur1 into @貸方金額,@個數

  else

  begin

  insert into 銀行已收單位未收 select * from 銀行對帳單 where 貸方金額=@貸方金額

  fetch next from cur1 into @貸方金額,@個數

  end

  end

  close cur1

  deallocate cur1

責任編輯:zoe

相關焦點

  • 農行手機銀行安全防範措施
    1.請勿向他人透露您的電子銀行密碼及帳戶密碼,最好定期更換您的密碼。  2.請不要把您的帳戶密碼和電子銀行密碼設置為身份證中的數字、生日、QQ號、電話號、手機號、帳號、有規則數字等容易被他人獲知或猜中的密碼。
  • ...銀行申請 銀行信用卡 盜刷 銀行方面 設置密碼 法院 kcat-社會...
    東方網2月23日消息:使用銀行卡需設置密碼保障安全,這個常識近日被人推翻——一位自稱銀行內部人士在專業理財論壇上發帖爆料,告知信用卡不設密碼其實更安全。記者求證中,本地銀行信用卡中心工作人員,也默認了這種說法,並表示自己的信用卡就沒有設置密碼。
  • SQL遊標原理和使用方法
    遊標為我們提供了一種極為優秀的解決方案。1.1 遊標和遊標的優點在資料庫中,遊標是一個十分重要的概念。遊標提供了一種對從表中檢索出的數據進行操作的靈活手段,就本質而言,遊標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。
  • 如何使用SQL Server遊標
    遊標為我們提供了一種極為優秀的解決方案。  1.遊標和遊標的優點  在資料庫中,遊標是一個十分重要的概念。遊標提供了一種對從表中檢索出的數據進行操作的靈活手段,就本質而言,遊標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。
  • 微眾銀行案例分析及中美網際網路銀行與實體銀行差異對比
    大數據與人工智慧方面,接入、利用用戶的支付、社交、徵信等多方面數據,使用神經網絡模型來快速、準確評估貸款額度、還款意願,實現風險控制。使用聯邦學習等技術,在不讀取敏感數據本身的同時利用這些數據實現神經網絡的訓練。此外,針對聽障、視障人群提供特殊的遠程客服,實現信息無障礙化服務。
  • SQL SERVER 參考:遊標(Cursor)的講解與實例
    【IT168 技術文檔】在資料庫中,遊標是一個十分重要的概念。遊標提供了一種對從表中檢索出的數據進行操作的靈活手段,就本質而言,遊標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。
  • 金融科技淘金熱:PSD2將是替代銀行的千載難逢的機會
    倫敦區塊鏈創業公司TrueLayer為銀行及創業公司提供開發者API,可以利用銀行基礎設施,利用即將生效的指令的機遇。翻譯:Annie_Xu歐洲想要推動金融服務業的創新步伐,同時致力於保護金融市場基礎設施的安全。歐盟(EU)積極迎接社會中的數位化轉型,為其經濟體參與者提供高效的、有意義的服務。在這些背景下,終端用戶需要即時支付解決方案。
  • [HK]鄭州銀行:海外監管公告 - 鄭州銀行股份有限公司關於籤訂募集...
    [HK]鄭州銀行:海外監管公告 - 鄭州銀行股份有限公司關於籤訂募集資金監管協議的公告、鄭州銀行股份有限公司關於股東權益變動的提示性公告、鄭州銀行股份有限公司簡式權益變動報告書及鄭州銀行股份有限公.鄭州銀行股份有限公司簡式權益變動報告書及鄭州銀行股份有限公司關於變..
  • 哈爾濱銀行榮獲「2020年度科技銀行獎」
    哈爾濱銀行憑藉在發展數位化普惠金融、推進金融科技創新應用以及提升移動金融服務能力等方面的工作實效,榮獲「2020年度科技銀行獎」。  2020年新冠肺炎疫情發生後,哈爾濱銀行第一時間發揮移動金融優勢,通過制定專項服務措施、豐富線上服務功能、強化科技運營保障等方式,提供7×24小時不間斷的金融服務,滿足客戶「不見面」金融服務需求,為抗擊疫情和復工復產保駕護航。
  • 外匯局公布17個典型案例,南京銀行、興業銀行等5家銀行被點名
    今日,外匯局網站發布關於外匯違規案例的通報,其中涉及的銀行有南京銀行、農業銀行、工商銀行、興業銀行以及招商銀行五家,涉及的案例類型有虛假轉口貿易付匯案、違規辦理內保外貸案、個人分拆售付匯案等。案例2:農業銀行寧波市分行虛假轉口貿易付匯案2016年9月至2017年9月,農業銀行寧波市分行憑企業無效提單或重複單證辦理轉口貿易付匯業務,未按規定在同一銀行網點辦理轉口貿易收付匯業務。
  • 漢口銀行個人網上銀行介紹
    最近有朋友向我諮詢漢口銀行個人網上銀行的情況,我特意上網查了下,整理了一些關於漢口銀行個人網上銀行的介紹,以下是漢口銀行個人網上銀行的介紹資料。 三、特點優勢 銀行個人網上銀行涵蓋了櫃檯除存取現金以外的大部分功能,客戶體驗度高、功能更豐富、系統更安全,讓您足不出戶,盡享便捷金融服務。
  • 邯鄲銀行董事長鄭志瑛:改變銀行「中間收入崇拜」,創建免費銀行...
    第三個改變是改變銀行服務效率,創建快樂銀行,破除融資難問題。邯鄲銀行快樂銀行,銀行兩件事:存款不排隊、貸款限時辦。我們用十二項措施創建不排隊銀行,現在我們邯鄲銀行110多家分支行在河北省有網點。我們平均排隊時間說的是:尖峰時段,平均等候時間4分鐘,超過10分鐘排隊的支行不超過5個,我們窗口等客戶。飯館是座位等我們,超市貨品等我們,怎麼到了銀行就要排隊一小時呢?
  • 東亞銀行主席父子專訪:充分利用香港現成優勢
    李國寶父子專訪 用好香港現成優勢  東亞銀行主席兼行政總裁李國寶1969年加入東亞銀行,從事金融業工作接近40年。他掌舵的東亞銀行被投資者譽為「最具中國概念香港銀行」。  23日,記者採訪了李國寶以及其兒子李民橋。
  • A股|「PS」銀行流水後,江西綠巨人被證監會揭穿,還牽出了另一個大瓜!
    簡單來說,江西綠巨人主要犯了三大錯誤:一是2016年-2018年大量更改銀行流水對手方名稱、摘要、明細帳記錄。二是未完整披露關聯方及其貸款走帳、資金拆借等資金往來情況。三是會計基礎及內部控制存在缺陷,譬如材料採購驗收單、領料單缺失,未登記銀行存款日記帳和現金日記帳等。