求一统计查询报表

flyingfree5 2006-03-13 09:27:56
新手上路

初级会员



UID 67291
精华 0
积分 5
帖子 6
金钱 5 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-12-19
状态 在线 费用类别(Fee_Type)
FeeNO FeeName
01 工资
02 奖金
03 补贴


费用明细(Fee_Feelst)
ID Name FeeNO Feeing
1 zhang 01 800
2 zhang 02 500
3 zhang 03 50
4 zeng 01 1000
5 wei 01 800
6 wei 02 500
7 wei 03 50


费用类别表是动态的,可增,可减的(Fee_Type )
怎样才能做成这样的的统计查询如下:
Name 工资 奖金 补贴
zhang 800 500 50
...全文
114 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lsqkeke 2006-03-14
结果表中多写了个记录,实际是没有的
回复
lsqkeke 2006-03-14
create table Fee_Type (FeeNO varchar(5), FeeName varchar(10))
insert Fee_Type
select '01' , '工资' union all
select '02' , '奖金' union all
select '03' , '补贴'


create table Fee_Feelst(ID int, Name varchar(10), FeeNO varchar(5),Feeing int)
insert Fee_Feelst
select 1 , 'zhang' , '01' , 800 union all
select 2 , 'zhang' , '02' , 500 union all
select 3 , 'zhang' , '03' , 50 union all
select 4 , 'zeng' , '01' , 1000 union all
select 5 , 'wei' , '01' , 800 union all
select 6 , 'wei' , '02' , 500 union all
select 7 , 'wei' , '03' , 50

declare @sql varchar(8000)
set @sql=''
set @sql='select [name]'
select @sql=@sql+','+feename+'=max(case FEENO when '+
cast(feeno as varchar(5))+'then feeing else 0 end)' from Fee_Type

set @sql=@sql+' from Fee_Feelst group by [name]'

exec(@sql)

结果:
Name 工资 奖金 补贴
zhang 800 500 50
wei 800 500 50
zeng 1000 0 0
zhang 800 500 50
回复
flyingfree5 2006-03-14
如果我的Fee_Type表是动态(有可能加或减)
比如:再加一项
FeeNO FeeName
01 工资
02 奖金
03 补贴
04 津贴

相应的结果:
Name 工资 奖金 补贴 津贴

请问SQL语句应该怎样写?
回复
GRWriter 2006-03-14
数据需要交叉, Grid++Report 可以做到,参考例子 CrossTab, 去 http://www.rubylong.cn 下载
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-13 09:27
社区公告
暂无公告