当前位置: 代码迷 >> Sql Server >> 财务中要生存以个表的SQL语句这么写,该怎么处理
  详细解决方案

财务中要生存以个表的SQL语句这么写,该怎么处理

热度:10   发布时间:2016-04-27 19:09:44.0
财务中要生存以个表的SQL语句这么写
财务中要生存以个利润表的SQL语句这么写
原来凭证表:
 年 月 科目ID 借方 贷方
2009 03 510100101 800 0
2009 03 510100202 600 0
2009 03 540100101 700 0
2009 03 540100102 700 0

科目表为
 
  ID 名称 级数  
5101 主营业务收入 1
5101001 主营业务收入-1 2
5101002 主营业务收入-2 2
510100101 主营业务收入-1-1 3
510100201 主营业务收入-2-1 3
510100102 主营业务收入-1-2 3
510100202 主营业务收入-2-2 3


现在要按级数分别汇总,请问SQL语句怎么些




------解决方案--------------------
SQL code
给个范例,自己写吧--测试数据DECLARE @a TABLE(No varchar(10),Name varchar(10))INSERT @a SELECT '101'  ,'现金'UNION ALL SELECT '102'  ,'银行存款'UNION ALL SELECT '10201','工行'UNION ALL SELECT '10202','建行'UNION ALL SELECT '10203','农行'DECLARE @b TABLE(No varchar(10),[Money] money )INSERT @b SELECT '101'  ,100UNION ALL SELECT '10201',20UNION ALL SELECT '10202',120--逐级汇总查询SELECT a.No,a.Name,    [Money]=ISNULL(SUM([Money]),0)FROM @a a    LEFT JOIN @b b ON b.No LIKE a.No+'%'GROUP BY a.No,a.NameORDER BY a.No/*--结果No         Name        Money ---------------- ----------------- --------------------- 101        现金         100.0000102        银行存款     140.000010201      工行         20.000010202      建行         120.000010203      农行         .0000--*/
------解决方案--------------------
SQL code
if object_id('凭证表') is not null 
drop table 凭证表
go
create table 凭证表([年] varchar(10),[月] varchar(10),[科目ID] varchar(10),[借方] int,[贷方] int)
insert 凭证表 select '2009','03',510100101,800,0
insert 凭证表 select '2009','03',510100102,600,0
insert 凭证表 select '2009','03',540100101,700,0
insert 凭证表 select '2009','03',540100102,700,0
go
if object_id('科目表') is not null
drop table 科目表
go
create table 科目表([ID] varchar(10),[名称] varchar(20),[级数] int)
insert 科目表 select '5101','主营业务收入',1
insert 科目表 select '5101001','主营业务收入-1',2
insert 科目表 select '5101002','主营业务收入-2',2
insert 科目表 select '510100101','主营业务收入-1-1',3
insert 科目表 select '510100201','主营业务收入-2-1',3
insert 科目表 select '510100102','主营业务收入-1-2',3
insert 科目表 select '510100202','主营业务收入-2-2',3
insert 科目表 select '5401','A主营业务收入',1
insert 科目表 select '5401001','A主营业务收入-1',2
insert 科目表 select '5401002','A主营业务收入-2',2
insert 科目表 select '540100101','A主营业务收入-1-1',3
insert 科目表 select '540100201','A主营业务收入-2-1',3
insert 科目表 select '540100102','A主营业务收入-1-2',3
insert 科目表 select '540100202','A主营业务收入-2-2',3
go
-->全部显示
SELECT [年],[月],ID,[名称],
  [借方]=ISNULL(SUM([借方]),0),
  [贷方]=ISNULL(SUM([贷方]),0) 
FROM 凭证表 a
  LEFT JOIN 科目表 b ON [科目ID] LIKE b.ID+'%'
GROUP BY [年],[月],ID,[名称]
ORDER BY ID
/*
年      月      ID    名称          借方      贷方
---------- ---------- ---------- -------------------- ----------- -----------
2009    03    5101    主营业务收入        1400    0
2009    03    5101001  主营业务收入-1      1400    0
2009    03    510100101  主营业务收入-1-1      800    0
  相关解决方案