求一统计查询报表

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
...全文
163 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 下载

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧