这个是表的结构 给了些数据 我怕我说不明白
------------------------------
AC_NO        VH_DB_AMT
------------------------------
5112214      100.00
5112261      120.00
5112268      100.005112311      100.00
5112312  100.00
5112321      1200.00
5112322      300.00
511232y      200.00
-------------------------------
 这个是另一张表的结构
---------------------------
AC_NO  AC_NAME       
---------------------------
5112      服務成本51122  服務費用
511221       水電費
5112214      工作場所水費 511226       保險費
5112261      一般房屋保險費
5112268      責任保險費    51123  材料及用品費511231      使用材料費
5112311  原料
5112312      物料511232  用品消耗
5112321      辦公(事務)用品
5112322      報章什誌
511232y      其他
我想要得到的结果是
-----------------------------
2服務成本  2120.00
22服務費用  320.00
221水電費  100.00
2214工作場所水費     100.00
226保險費  220.00
2261一般房屋保險費   120.00
2268責任保險費      100.00
23材料及用品費  1900.00
231使用材料費  200.00
2311原料             100.00
2312物料      100.00
232用品消耗              1700.00
2321辦公(事務)用品 1200.00
2322報章什誌  300.00
232y其他  200.00

解决方案 »

  1.   

    BOM按节点排序应用实例 
    ----------------------------------------------------------------------------  Author : htl258(Tony)--  Date   : 2010-04-23 02:37:28--  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) --          Jul  9 2008 14:43:34 --          Copyright (c) 1988-2008 Microsoft Corporation--          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)--  Subject: BOM按节点排序应用实例-------------------------------------------------------------------------- --实例1:--> 生成测试数据表:tb IF NOT OBJECT_ID('[tb]') IS NULL    DROP TABLE [tb]GOCREATE TABLE [tb]([id] INT,[code] NVARCHAR(10),[pid] INT,[name] NVARCHAR(10))INSERT [tb]SELECT 1,'01',0,N'服装' UNION ALLSELECT 2,'01',1,N'男装' UNION ALLSELECT 3,'01',2,N'西装' UNION ALLSELECT 4,'01',3,N'全毛' UNION ALLSELECT 5,'02',3,N'化纤' UNION ALLSELECT 6,'02',2,N'休闲装' UNION ALLSELECT 7,'02',1,N'女装' UNION ALLSELECT 8,'01',7,N'套装' UNION ALLSELECT 9,'02',7,N'职业装' UNION ALLSELECT 10,'03',7,N'休闲装' UNION ALLSELECT 11,'04',7,N'西装' UNION ALLSELECT 12,'01',11,N'全毛' UNION ALLSELECT 13,'02',11,N'化纤' UNION ALLSELECT 14,'05',7,N'休闲装'GO--SELECT * FROM [tb] -->SQL查询如下: ;WITH T AS(    SELECT CAST(CODE AS VARCHAR(20)) AS CODE,*,        CAST(ID AS VARBINARY(MAX)) AS px     FROM tb AS A    WHERE NOT EXISTS(SELECT * FROM tb WHERE id=A.pid)    UNION ALL     SELECT CAST(B.CODE+A.CODE AS VARCHAR(20)),A.*,         CAST(B.px+CAST(A.ID AS VARBINARY) AS VARBINARY(MAX))        FROM tb AS A        JOIN T AS B           ON A.pid=B.id)SELECT Code,Name FROM T ORDER BY px/*Code                 Name-------------------- ----------01                   服装0101                 男装010101               西装01010101             全毛01010102             化纤010102               休闲装0102                 女装010201               套装010202               职业装010203               休闲装010204               西装01020401             全毛01020402             化纤010205               休闲装 (14 行受影响)*/ --实例2:--> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
        DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([id] INT,[parentid] INT,[categoryname] NVARCHAR(10))
    INSERT [tb]
    SELECT 1,0,'test1' UNION ALL
    SELECT 2,0,'test2' UNION ALL
    SELECT 3,1,'test1.1' UNION ALL
    SELECT 4,2,'test2.1' UNION ALL
    SELECT 5,3,'test1.1.1' UNION ALL
    SELECT 6,1,'test1.2'
    GO
    --SELECT * FROM [tb]-->SQL查询如下:
    ;WITH T AS
    (
        SELECT *,CAST(ID AS VARBINARY(MAX)) AS px 
        FROM tb AS A
        WHERE NOT EXISTS(SELECT * FROM tb WHERE id=A.[parentid])
        UNION ALL 
        SELECT A.*,CAST(B.px+CAST(A.ID AS VARBINARY) AS VARBINARY(MAX))  
        FROM tb AS A
            JOIN T AS B
               ON A.[parentid]=B.id
    )
    SELECT [id],[parentid],[categoryname] FROM T 
    ORDER BY px
    /*
    id          parentid    categoryname
    ----------- ----------- ------------
    1           0           test1
    3           1           test1.1
    5           3           test1.1.1
    6           1           test1.2
    2           0           test2
    4           2           test2.1(6 行受影响)
    */本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2010/04/23/5518166.aspx
      

  2.   

    try:
    select b.AC_NO+b.AC_Name,sum(a.VH_DB_AMT) from 前表 a inner join 后表 b on left(a.AC_NO,len(B.AC_NO))=b.ac_no
    group by b.AC_NO+b.AC_Name
      

  3.   

    恩,排版花了不少精力
    IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1
    IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2
    GO
    CREATE TABLE T1(
    AC_NO  VARCHAR(50)      
    ,VH_DB_AMT NUMERIC(19,2)
    )
    GO
    INSERT INTO T1
    SELECT '5112214',100.00
    UNION ALL SELECT '5112261',120.00
    UNION ALL SELECT '5112268',100.00
    UNION ALL SELECT '5112311',100.00
    UNION ALL SELECT '5112312',100.00
    UNION ALL SELECT '5112321',1200.00
    UNION ALL SELECT '5112322',300.00
    UNION ALL SELECT '511232y',200.00
    GO
    CREATE TABLE T2(
    AC_NO   VARCHAR(50)      
    ,AC_NAME VARCHAR(100)
    )
    GO
    INSERT INTO T2
    SELECT '5112','服務成本'
    UNION ALL SELECT '51122','服務費用'
    UNION ALL SELECT '511221','水電費'
    UNION ALL SELECT '5112214','工作場所水費'    
    UNION ALL SELECT '511226','保險費'
    UNION ALL SELECT '5112261','一般房屋保險費'
    UNION ALL SELECT '5112268','責任保險費'       
    UNION ALL SELECT '51123','材料及用品費'
    UNION ALL SELECT '511231','使用材料費'
    UNION ALL SELECT '5112311','原料'
    UNION ALL SELECT '5112312','物料'
    UNION ALL SELECT '511232','用品消耗'
    UNION ALL SELECT '5112321','辦公(事務)用品'
    UNION ALL SELECT '5112322','報章什誌'        
    UNION ALL SELECT '511232y','其他'
    GO
    ;WITH MU AS (
    SELECT 1 AS LEVEL,AC_NO,AC_NAME,CONVERT(VARCHAR(50),NULL) AS FNO
    FROM T2 T21
    WHERE NOT EXISTS(
    SELECT 1 FROM T2 T22 WHERE T22.AC_NO<>T21.AC_NO AND T21.AC_NO LIKE T22.AC_NO+'%'
    )
    UNION ALL
    SELECT LEVEL+1,T2.AC_NO,T2.AC_NAME,MU.AC_NO
    FROM T2 
    INNER JOIN MU ON T2.AC_NO LIKE MU.AC_NO+'_'
    )
    SELECT
    CONVERT(VARCHAR(100),(LEFT(REPLICATE(' ',LEVEL-1)+STUFF(AC_NO,1,3,'')+AC_NAME+REPLICATE(' ',100),100)))
    +LTRIM((SELECT SUM(VH_DB_AMT) FROM T1 WHERE T1.AC_NO LIKE MU.AC_NO+'%') )
    FROM MU 
    ORDER BY AC_NO,LEVEL
    /*
    2服務成本                                                                                           2220.00
     22服務費用                                                                                         320.00
      221水電費                                                                                         100.00
       2214工作場所水費                                                                                 100.00
      226保險費                                                                                         220.00
       2261一般房屋保險費                                                                               120.00
       2268責任保險費                                                                                   100.00
     23材料及用品費                                                                                     1900.00
      231使用材料費                                                                                     200.00
       2311原料                                                                                         100.00
       2312物料                                                                                         100.00
      232用品消耗                                                                                       1700.00
       2321辦公(事務)用品                                                                             1200.00
       2322報章什誌                                                                                     300.00
       232y其他                                                                                         200.00
    */