SQL script 會計記賬 Debit-Credit Bookkeeping

---會計記賬 Debit-Credit Bookkeeping

CREATE TABLE 
        #geovindu 
(        
        Account VARCHAR(20), 	--賬號
        [Date] DATETIME, 	--時間
        Debit DECIMAL(9,2), 	--借入
        Credit DECIMAL(9,2) 	--貸出
) 
GO
INSERT INTO #geovindu VALUES ('10139', '2007-08-31', 2025.91, 0.0) 
INSERT INTO #geovindu VALUES ('10139', '2007-08-31', 0.0, 3620.11) 
INSERT INTO #geovindu VALUES ('10139', '2007-09-30', 4631.52, 0.0) 
INSERT INTO #geovindu VALUES ('10139', '2007-09-30', 0.0, 11336.71) 
INSERT INTO #geovindu VALUES ('10139', '2007-09-30', 0.0, 14.8801) 
INSERT INTO #geovindu VALUES ('12211', '2007-08-31', 1352.76, 0.0) 
INSERT INTO #geovindu VALUES ('12211', '2007-08-31', 0.0, 3872.5) 
  
/*
塗聚文 締友計算機信息技術有限公司 
Geovin Du
*/ 
---查詢

SELECT 
        account AS '賬目編目號', 
        [date] AS '日期', 
        SUM(Debit) AS '借', 
        - SUM(Credit) AS '貸', 
        (SELECT ISNULL(SUM(m2.Debit),0) - ISNULL(SUM(m2.Credit),0) FROM #geovindu m2 WHERE m1.account = m2.account AND m2.[date] <= m1.[date] AND  
  
CASE WHEN m2.debit <> 0 THEN 0 ELSE 1 END <= CASE WHEN m1.debit <> 0 THEN 0 ELSE 1 END 
  
) AS '合計' --Balance 
FROM 
        #geovindu m1 
GROUP BY 
        account, 
        [date], 
        CASE WHEN debit <> 0 THEN 0 ELSE 1 END 
ORDER BY 
        account, 
        [date], 
        CASE WHEN debit <> 0 THEN 0 ELSE 1 END 
  
  
DROP TABLE #geovindu 

DROP TABLE #GeTbl
GO
create table #GeTbl (Tid VARCHAR(20), Ttype varchar(50), Tamt float) ;
GO
Drop table #GeType
Create table #GeType (TType varchar(50) primary key, GroupType tinyint)

insert into #GeType (TType,GroupType) values ('Cash',1)
insert into #GeType (TType,GroupType) values ('Expense',1)
insert into #GeType (TType,GroupType) values ('Credit',2)
insert into #GeType (TType,GroupType) values ('Debit',2)
insert into #GeType (TType,GroupType) values ('Petty Cash',3)
insert into #GeType (TType,GroupType) values ('Petty Expense',3)


insert into #GeTbl  select  
'101','Cash',-100
UNION ALL SELECT 
'101','Expense',-200
UNION ALL SELECT 
'101','Credit',-100
UNION ALL SELECT 
'101','Debit',-100 UNION ALL SELECT 
'101','Expense',-150 UNION ALL SELECT 
'102','Credit',-50 UNION ALL SELECT 
'102','Debit',-100 UNION ALL SELECT 
'102','Petty expense',100 UNION ALL SELECT 
'102','Cash',200 UNION ALL SELECT 
'102','Expense',-200 UNION ALL SELECT 
'102','Petty cash',100 UNION ALL SELECT 
'103','Cash',200 UNION ALL SELECT 
'103','Expense',-100 UNION ALL SELECT 
'104','Cash',200 UNION ALL SELECT 
'104','Expense',-200

---
select * from (
select * from #GeTbl
 where Ttype in ('Cash','Expense')
   and Tid in (select Tid from 
                (select Tid, SUM(Tamt) DrCrTotal
                   from #GeTbl
                  where Ttype in ('Cash','Expense')
                  group by Tid
                   having SUM(Tamt) <> 0) v)
union all
select * from #GeTbl
 where Ttype in ('Debit','Credit')
   and Tid in (select Tid from 
                (select Tid, SUM(case when TType = 'Credit' then Tamt * -1 else Tamt end) DrCrTotal
                   from #GeTbl
                  where Ttype in ('Debit','Credit')
                  group by Tid
                   having SUM(case when TType = 'Credit' then Tamt * -1 else Tamt end) <> 0) v)
union all
select * from #GeTbl
 where Ttype not in ('Debit','Credit', 'Cash','Expense')
 ) x
order by TID                      


---
select g.Tid, g.Ttype, g.Tamt 
from #GeTbl g
inner join #GeType gt
 on g.Ttype = gt.TType
inner join  (
select a.Tid, b.GroupType, Sum(a.Tamt) DrCrTotal
   from #GeTbl a
   inner join #GeType b
     on a.Ttype = b.TType                                          
  group by a.Tid, b.GroupType
   having SUM(a.Tamt) <> 0) v
on g.Tid = v.Tid
and gt.GroupType = v.GroupType   
order by g.Tid

/**********
塗聚文 Geovin Du
締友計算機信息技術有限公司
***********/

create table tblAccount
(
 A_ID VARCHAR(20), 
 A_Type VARCHAR(20),
 A_Amount MONEY
)
GO
--
insert into tblAccount (A_ID,A_Type, A_Amount)
select '1','Credit',500
union all select '1','Credit',100
union all select '1','Debit',50
union all select '2','Debit',150
union all select '2','Credit',100
go

--
select  a.SumCr as Credit ,
        b.SumDr as Debit ,
        a.SumCr - b.SumDr as Balance
from    ( select    sum(A_Amount) as SumCr
          from      tblAccount
          where     A_ID = 1
                    and A_Type = 'Credit'
        ) a ,
        ( select    sum(A_Amount) as SumDr
          from      tblAccount
          where     A_ID = 1
                    and A_Type = 'Debit'
        ) b
--
select  a.A_ID as [ID] ,
        a.SumCr as Credit ,
        b.SumDr as Debit ,
        a.SumCr - b.SumDr as Balance
from    ( select    A_ID ,
                    sum(A_Amount) as SumCr
          from      tblAccount
          where     A_Type = 'Credit'
          group by  A_ID
        ) a
        inner join ( select A_ID ,
                            sum(A_Amount) as SumDr
                     from   tblAccount
                     where  A_Type = 'Debit'
                     group by A_ID
                   ) b on a.A_ID = b.A_ID

go

drop table tblAccount
go
---
FaceCat-Kronos是一款由花卷猫量化团队基于清华大学Kronos开源架构开发的金融预测系统。该系统融合了深度学习方法,通过对证券历史行情进行大规模预训练,构建了能够识别市场微观结构的分析模型。该工具的核心功能在于为做市商及短线交易者提供高精度的价格形态规律推演,从而优化其交易策略的制定过程。 从技术架构来看,该系统依托Kronos框架的高性能计算特性,实现了对海量金融时序数据的高效处理。通过引入多层神经网络,模型能够捕捉传统技术分析难以察觉的非线性关联与潜在模式。这种基于人工智能的量化分析方法,不仅提升了市场数据的信息提取效率,也为金融决策过程引入了更为客观的算法依据。 在行业应用层面,此类工具的演进反映了金融科技领域向数据驱动范式转型的趋势。随着机器学习算法的持续优化,量化预测模型在时序外推准确性方面有望取得进一步突破,这可能对市场定价机制与风险管理实践产生结构性影响。值得注意的是,在推进技术应用的同时,需同步完善数据治理框架,确保模型训练所涉及的敏感金融信息符合隐私保护与合规性要求。 总体而言,FaceCat-Kronos代表了金融分析工具向智能化方向演进的技术探索。它的发展既体现了开源计算生态与专业领域知识的有效结合,也为市场参与者提供了补充传统分析方法的算法工具。未来随着跨学科技术的持续融合,此类系统有望在风险控制、策略回测等多个维度推动投资管理的科学化进程。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值