有一个表 b
PackCJ(层级)、Amount(数量)
1                3
2                2
3                1
.                .
.                .
我要的结果是 6:2:1  
也就是说: 1层数量* 2层数量:2层数量* 三层数量:最外层数量    

解决方案 »

  1.   

    感觉还是在sql里面处理比较好,不会太影响效率,用游标吧!
      

  2.   

    CREATE TABLE TBTEST(PackCJ VARCHAR(10),Amount VARCHAR(10))
    INSERT TBTEST
    SELECT 1       ,         3 UNION ALL
    SELECT 2       ,         2 UNION ALL
    SELECT 3       ,         1 --SELECT * FROM TBTEST
    DECLARE @NUM1 INT
    DECLARE @NUM2 INT
    DECLARE @NUM3 INT
    SELECT @NUM1=Amount FROM TBTEST WHERE PackCJ IN (SELECT MIN(PackCJ) FROM TBTEST)
    SELECT @NUM2=Amount FROM TBTEST WHERE PackCJ IN (SELECT TOP 1 * FROM (SELECT TOP 2 PackCJ FROM TBTEST ORDER BY PackCJ)AS T ORDER BY PackCJ DESC)
    SELECT @NUM3=Amount FROM TBTEST WHERE PackCJ IN (SELECT MAX(PackCJ) FROM TBTEST)--SELECT @NUM1,@NUM2,@NUM3
    SELECT CONVERT(VARCHAR(10),@NUM1*@NUM2)+':'+CONVERT(VARCHAR(10),@NUM2*@NUM3)+':'+CONVERT(VARCHAR(10),@NUM3)
                                     
    -------------------------------- 
    6:2:1(所影响的行数为 1 行)