• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

SQL 超难的问题,请高手帮助写存储过程,谢谢

hejiwang 2008-09-03 01:14:22
问题如下:
1,有两个表,一个是“项目结构表”,别一个是“项目资金表”,只写出了关键字段
项目结构表
PROJECT_ID PROJECT_PRENT PROJECT_NAME
PM200801 0 XX软件项目
PM200801-01 PM200801 市场费用
PM200801-02 PM200801 商务费用
PM200801-03 PM200801 开发费用
PM200801-04 PM200801 其它费用
PM200801-01-01 PM200801-01 市场开拓费用
PM200801-01-02 PM200801-01 出差费用
PM200801-01-03 PM200801-01 广告费用
PM200801-01-04 PM200801-01 人员补偿费用
PM200801-01-05 PM200801-01 送礼(灰色)费用
PM200801-02-01 PM200801-02 请客吃饭费用
PM200801-02-02 PM200801-02 出差费用
PM200801-02-03 PM200801-02 员工提成费用
PM200801-02-04 PM200801-02 人员补偿费用
PM200801-03-01 PM200801-03 调研费用
PM200801-03-02 PM200801-03 技术支持费用
PM200801-03-03 PM200801-03 开发提成费用
PM200801-03-04 PM200801-03 生活补贴费用

项目资金表
PROJECT_ID PROJECT_CASE
PM200801-01-01 100000
PM200801-01-02 200000
PM200801-01-03 300000
PM200801-01-04 400000
PM200801-02-04 500000
PM200801-02-03 600000
PM200801-03-01 700000

2,通过存储过程得到一张查询结果表(因每个项目的子项目的级数不限3-10层,子项目数量在2000-10000之间)
显示结果数字如下:
PROJECT_ID PROJECT_CASE PROJECT_NAME
PM200801 2800000 XX软件项目
PM200801-01 1000000 市场费用
PM200801-01-01 100000 市场开拓费用
PM200801-01-02 200000 出差费用
PM200801-01-03 300000 广告费用
PM200801-01-04 400000 人员补偿费用
PM200801-01-05 0 送礼(灰色)费用
PM200801-02 1100000 商务费用
PM200801-02-01 0 请客吃饭费用
PM200801-02-02 0 出差费用
PM200801-02-03 600000 员工提成费用
PM200801-02-04 500000 人员补偿费用
PM200801-03 700000 开发费用
PM200801-03-01 700000 调研费用
PM200801-03-02 0 技术支持费用
PM200801-03-03 0 开发提成费用
PM200801-03-04 0 生活补贴费用
PM200801-04 0 其它费用
3,说明:
1)“项目结构表”中PROJECT_ID是关键字,有唯一,但没有索引,查询出来的结果要求排序处理
2)里面关键的地方就是金额的累加,是一层一层的累加,金额只有最后一级子项目才有金额,其它层没有,最后一级子项目的金额要一层一层的累加到上一级。


谢谢大家,也希望得到大家的帮助
...全文
37 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pt1314917 2008-09-03


select *,ss=(select isnull(sum(PROJECT_CASE),0) from 项目资金表 where PROJECT_ID like a.PROJECT_ID+'%') from 项目结构表 a
order by PROJECT_ID

回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-09-03 01:14
社区公告
暂无公告