首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求高难道报表统计语句,来

2012-02-01 
求高难道报表统计语句,高手请进来tablea编码费用类别费用2314234332310072376123753232262512542542251282

求高难道报表统计语句,高手请进来
tablea  
编码       费用类别     费用
23               1                 4
23               43               3
23               100             7
23               76               1
23               75               3
23               22               6
25               12                 54
25               4                 2
25               12               8
25               76               5
25               75               4
25               22               2


tableb
费用名称         费用类别
书本费               1,22,75,76
文具费               4,12,43,100

想出来报表
编码         费用名称         费用
23               书本费           14
23               文具费           10
25               书本费           11
25               文具费           64


请高手帮帮忙,tableb的费用类别就等于tabla   的费用类别.


[解决办法]
/*创建测试数据*/
if object_id( 'tbTestA ') is not null
drop table tbTestA
if object_id( 'tbTestB ') is not null
drop table tbTestB
GO
create table tbTestA(编码 int, 费用类别 varchar(10), 费用 int)
insert tbTestA
select 23, 1, 4 union all
select 23, 43, 3 union all
select 23, 100, 7 union all
select 23, 76, 1 union all
select 23, 75, 3 union all
select 23, 22, 6 union all
select 25, 12, 54 union all
select 25, 4, 2 union all
select 25, 12, 8 union all
select 25, 76, 5 union all
select 25, 75, 4 union all
select 25, 22, 2

create table tbTestB(费用名称 varchar(50), 费用类别 varchar(50))
insert tbTestB
select '书本费 ', '1,22,75,76 ' union all
select '文具费 ', '4,12,43,100 '
GO

[解决办法]
if object_id( 'pubs..tablea ') is not null
drop table tablea
go

create table tablea(编码 int,费用类别 varchar(10),费用 int)
insert into tablea (编码,费用类别,费用) values(23, '1 ' , 4)
insert into tablea (编码,费用类别,费用) values(23, '43 ' , 3)
insert into tablea (编码,费用类别,费用) values(23, '100 ', 7)


insert into tablea (编码,费用类别,费用) values(23, '76 ' , 1)
insert into tablea (编码,费用类别,费用) values(23, '75 ' , 3)
insert into tablea (编码,费用类别,费用) values(23, '22 ' , 6)
insert into tablea (编码,费用类别,费用) values(25, '12 ' , 54)
insert into tablea (编码,费用类别,费用) values(25, '4 ' , 2)
insert into tablea (编码,费用类别,费用) values(25, '12 ' , 8)
insert into tablea (编码,费用类别,费用) values(25, '76 ' , 5)
insert into tablea (编码,费用类别,费用) values(25, '75 ' , 4)
insert into tablea (编码,费用类别,费用) values(25, '22 ' , 2)
go

if object_id( 'pubs..tableb ') is not null
drop table tableb
go

create table tableb(费用名称 varchar(10),费用类别 varchar(20))
insert into tableb(费用名称,费用类别) values( '书本费 ', '1,22,75,76 ')
insert into tableb(费用名称,费用类别) values( '文具费 ', '4,12,43,100 ')
go

select a.编码, b.费用名称 , sum(a.费用) 费用 from tablea a,tableb b where charindex( ', '+a.费用类别+ ', ', ', '+b.费用类别+ ', ')> 0
group by 编码 , 费用名称

drop table tablea ,tableb

/*
编码 费用名称 费用
----------- ---------- -----------
23 书本费 14
25 书本费 11
23 文具费 10
25 文具费 64

(所影响的行数为 4 行)
*/

热点排行