表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语句实现上面的过程,不要用游标来实现。
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语句实现上面的过程,不要用游标来实现。
http://www.microsoft.com/china/msdn/library/data/sqlserver/05TSQLEnhance.mspx不过要SQL2005才支持
这种手段!太无耻了!!