科目表:(每子个级的科目编码都是由父级编码+ "-" + 子编码)
科目ID 科目编码 科目名称
1 1001 现金
2 1002 银行存款
3 1002-01 工商银行
4 1002-02 农业银行
.....
100 2171 应交税金
101 2171-01 应交增值税
102 2171-01-01 进项税额
103 2171-01-02 已交税金
104 2171-02 未交增值税
105 2171-03 应交营业税业务发生表(该表的科目都是末级)
科目ID 年度 月度 借方金额 贷方金额
1 2008 5 90 10
4 2008 5 20 30
102 2008 5 1 4
105 2008 5 100 200求一个Sql,能查询父级汇总子级,并且根据子级来确定显示父级
如只查科目(ID=102 OR ID=105)时,结果就为科目ID 科目编码 科目名称 借方金额 贷方金额
100 2171 应交税金 101 204
101 2171-01 应交增值税 1 4
102 2171-01-01 进项税额 1 4
105 2171-03 应交营业税 100 200如果ID=105时,则为
科目ID 科目编码 科目名称 借方金额 贷方金额
100 2171 应交税金 100 200
105 2171-03 应交营业税 100 200也就是,根据所查到的子级,再判断该子级是否有父级,若有父级,则显示父级,并且汇总该父级,但父级也只是汇总所有显示的子级.大家帮帮我吧!
科目ID 科目编码 科目名称
1 1001 现金
2 1002 银行存款
3 1002-01 工商银行
4 1002-02 农业银行
.....
100 2171 应交税金
101 2171-01 应交增值税
102 2171-01-01 进项税额
103 2171-01-02 已交税金
104 2171-02 未交增值税
105 2171-03 应交营业税业务发生表(该表的科目都是末级)
科目ID 年度 月度 借方金额 贷方金额
1 2008 5 90 10
4 2008 5 20 30
102 2008 5 1 4
105 2008 5 100 200求一个Sql,能查询父级汇总子级,并且根据子级来确定显示父级
如只查科目(ID=102 OR ID=105)时,结果就为科目ID 科目编码 科目名称 借方金额 贷方金额
100 2171 应交税金 101 204
101 2171-01 应交增值税 1 4
102 2171-01-01 进项税额 1 4
105 2171-03 应交营业税 100 200如果ID=105时,则为
科目ID 科目编码 科目名称 借方金额 贷方金额
100 2171 应交税金 100 200
105 2171-03 应交营业税 100 200也就是,根据所查到的子级,再判断该子级是否有父级,若有父级,则显示父级,并且汇总该父级,但父级也只是汇总所有显示的子级.大家帮帮我吧!
解决方案 »
- 查询数据筛选结果、。
- sql bak 文件太大导致无法恢复
- 这样做可以吗?
- 求助:SQL Server2000服务不能自动启动
- 问一个查询语句
- 测试!
- ado+sqlserver recordset open sql first-chance exception
- 一条有关分组的SQL语句求教,在线等待
- 请教各位高手:在sql server 2000种如何设置 Truncate log on checkpoint 为false???
- 我想给某个表的每一个字段设置一个中文的名字,以便在程序的界面上用作标签?如何实现?
- 请教大家一个连接查询的SQL文
- 怎么输出日期列表. 分天统计的时候,日期列表有时候并不能从数据表中读取,因为可能有些日期在数据表中不存在.
b.科目ID,b.科目编码,b.科目名称,c.借方金额,c.贷方金额
from
科目表 a
join
科目表 b on a.科目编码 like b.科目编码+'%'
join
业务发生表 c on c.科目ID=a.科目ID
where
a.ID=105
-->生成测试数据
declare @科目表 table([科目ID] int,[科目编码] nvarchar(10),[科目名称] nvarchar(5))
Insert @科目表
select 1,N'1001',N'现金' union all
select 2,N'1002',N'银行存款' union all
select 3,N'1002-01',N'工商银行' union all
select 4,N'1002-02',N'农业银行' union all
select 100,N'2171',N'应交税金' union all
select 101,N'2171-01',N'应交增值税' union all
select 102,N'2171-01-01',N'进项税额' union all
select 103,N'2171-01-02',N'已交税金' union all
select 104,N'2171-02',N'未交增值税' union all
select 105,N'2171-03',N'应交营业税'
--Select * from @科目表declare @业务发生表 table([科目ID] int,[年度] Datetime,[月度] int,[借方金额] int,[贷方金额] int)
Insert @业务发生表
select 1,'2008',5,90,10 union all
select 4,'2008',5,20,30 union all
select 102,'2008',5,1,4 union all
select 105,'2008',5,100,200
--Select * from @业务发生表select
b.科目ID,b.科目编码,b.科目名称,sum(c.借方金额) as [借方金额],sum(c.贷方金额) as [贷方金额]
from
@科目表 a
join
@科目表 b on a.科目编码 like b.科目编码+'%'
join
@业务发生表 c on c.科目ID=a.科目ID
where
a.科目ID in (102,105)
group by b.科目ID,b.科目编码,b.科目名称
/*
科目ID 科目编码 科目名称 借方金额 贷方金额
----------- ---------- ----- ----------- -----------
100 2171 应交税金 101 204
101 2171-01 应交增值税 1 4
102 2171-01-01 进项税额 1 4
105 2171-03 应交营业税 100 200
*/
/*
科目ID 科目编码 科目名称 借方金额 贷方金额
----------- ---------- ----- ----------- -----------
100 2171 应交税金 100 200
105 2171-03 应交营业税 100 200
*/