表t1的数据如下:
id    f1      f2      f3
1    101       0     现金
2    10101     1     人民币
3    10102     1     港币
4    10103     1     美金
5    102       0     银行存款
6    10201     0     中国银行
7    1020101   1     中国银行A支行
8    131       1     材料成本差异 
9    405       0     生产成本
10   40501     0     辅助费用
11   4050101   0     辅助费用1
12   405010101 1     辅助费用11  说明:t1.f2为明细字段,t1.f2=1表示为明细记录,比如t1.f1=101有下一级,所以t1.id=1时的t1.f2=0,“101”的下一级有:10101和10102;t1.f1=131时,由于没有下一级,所以t1.f2=1是明细记录;以此类推。
表t2的数据如下:
id      f1       f2        f3      
1      10101     10        30      
2      10102     30
3      10201               
4      1020101   40        50
5      131                 60
6      405010101           70 我想实现:
(1)、当科目级别=1时,开始科目=101,结束科目='',表t2显示如下:(说明,比如“405”为1级,“40501”为2级,“4050101”为3级等等)
id      f1       f2        f3      f4
1      101       40        30      现金
2      102       40        50      银行存款
3      131                 60      材料成本差异
4      405                 70      辅助费用(2)、当科目级别=2时,开始科目=10102,结束科目=131,表t2显示如下:
id      f1       f2        f3      f4
1      10102     30                港币
2      102       40        50      银行存款
3      10201     40        50      中国银行A支行     
3      131                 60      材料成本差异(3)、当科目级别=1时,开始科目=10101,结束科目='',表t2显示如下:(说明,因为10101不是1级科目,所以没有显示101)
id      f1       f2        f3      f4
1      102       40        50      银行存款
2      131                 60      材料成本差异
3      405                 70      辅助费用(4)、当科目级别=3时,开始科目=10101,结束科目='',表t2显示如下:
id      f1       f2        f3      f4
1      101       40        30      现金 
1      10101     10        30      人民币
2      10102     30                港币
3      102       40        50      银行存款 
4      10201     40        50      中国银行    
5      1020101   40        50      中国银行A支行
6      131                 60      材料成本差异 
7      405                 70      辅助费用
8      40501               70      辅助费用1
9      4050101             70      辅助费用11请问如何用sql语句实现上面的过程,不要用游标来实现。

解决方案 »

  1.   

    看着头晕,不过实现大概没问题,游标倒不用,不过要用存储过程递归不就是BOM展开一样的问题吗?
      

  2.   

    看看这个吧:
    http://www.microsoft.com/china/msdn/library/data/sqlserver/05TSQLEnhance.mspx不过要SQL2005才支持
      

  3.   

    不要相信楼上!那是个骗子!! get.php?id=23516
    这种手段!太无耻了!!
      

  4.   

    其实我说得很清楚的,把我的问题copy到记事本里看,就会更加清楚。表t1和表t2是原始数据,我想实现四个条件是对表t2进行查询和统计的
      

  5.   

    我写了一个sql语句,写在这里,但还是有问题,不知怎么改,帮我看看:http://community.csdn.net/Expert/topic/4655/4655592.xml?temp=.8196375
      

  6.   

    libin_ftsafe(子陌红尘) 帮我解决了这个问题
      

  7.   

    在http://community.csdn.net/Expert/topic/4655/4655592.xml?temp=.8411066