本帖最后由 taizhou3D 于 2014-11-17 08:58:17 编辑

解决方案 »

  1.   


    ProductID   对应    SubProdID  
      

  2.   


    /****** Script for SelectTopNRows command from SSMS  ******/
    SELECT [Flag]
          ,[ProductID]
          ,[SubProdID]
          ,[QtyOfBatch]
          ,[BatchAmount] into #TempBom 
      FROM [CHIComp88].[dbo].[prdBOMMats]  where  ProductID='HCFWC11A.00000000000'
     
      ;WITH t AS
    (
        SELECT SubProdID,lvl=0
        FROM #TempBom t
        WHERE  ProductID='HCFWC11A.00000000000'
        UNION ALL
        SELECT a.SubProdID,lvl+1
        FROM #TempBom a
           JOIN t b
               ON  a.ProductID = b.SubProdID
    )
    SELECT a.*,t.lvl
    FROM #TempBom a
        JOIN t
          ON a.ProductID=t.SubProdID
    --ORDER BY px drop table #TempBom为什么没有结果
      

  3.   


    /****** Script for SelectTopNRows command from SSMS  ******/
    SELECT [Flag]
          ,[ProductID]
          ,[SubProdID]
          ,[QtyOfBatch]
          ,[BatchAmount] into #TempBom 
      FROM [CHIComp88].[dbo].[prdBOMMats]  where  ProductID='HCFWC11A.00000000000'
     
      ;WITH t AS
    (
        SELECT SubProdID,lvl=0
        FROM #TempBom t
        WHERE  ProductID='HCFWC11A.00000000000'
        UNION ALL
        SELECT a.SubProdID,lvl+1
        FROM #TempBom a
           JOIN t b
               ON  a.SubProdID = b.ProductID)
    SELECT a.*,t.lvl
    FROM #TempBom a
        JOIN t
          ON a.ProductID=t.SubProdID
    --ORDER BY px drop table #TempBom
      

  4.   

    消息 207,级别 16,状态 1,第 17 行
    列名 'ProductID' 无效。                               --- T表里面不存在这样的 字段
      

  5.   


    是同一个问题,但是还是没有解决 ,我只能从新开个帖子,   又怕没有人更贴,只能这样了,sql新手,请教前面的我绕在     节段  里面去了
      

  6.   


    /****** Script for SelectTopNRows command from SSMS  ******/
    SELECT [Flag]
          ,[ProductID]
          ,[SubProdID]
          ,[QtyOfBatch]
          ,[BatchAmount] into #TempBom 
      FROM [CHIComp88].[dbo].[prdBOMMats]  where  ProductID='HCFWC11A.00000000000'
     
      ;WITH t AS
    (
        SELECT *,lvl=0
        FROM #TempBom t
        WHERE  ProductID='HCFWC11A.00000000000'
        UNION ALL
        SELECT a.*,lvl+1
        FROM #TempBom a
           JOIN t b
               ON  a.SubProdID = b.ProductID)
    SELECT a.*,t.lvl
    FROM #TempBom a
        JOIN t
          ON a.ProductID=t.SubProdID
    --ORDER BY px drop table #TempBom
      

  7.   


    结果还是一样的,没有数据,  郁闷的我把 SELECT a.*,t.lvl
    FROM #TempBom a
        JOIN t
          ON a.ProductID=t.SubProdID换成
    SELECT * 
    FROM t
    结果显示的  是   #TempBom   本身这就是为什么,没有数据的原因  #TempBom  a     JOIN    #TempBom  b   on   条件    永远没有数据
      

  8.   

    WITH prdBOMMats(ProductID,OrderID,SubProdID,QtyOfBatch,WastingRate,MatSource,MatsRe,BatchAmount) AS (
        SELECT 'HCFWC11A.00000000000',NULL,'HCFWC11A.1-100000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.00000000000',NULL,'HCFWC11A.1.100000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.00000000000',NULL,'HCFWC11A.1-200000000',2.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.00000000000',NULL,'HCFWC11A.1.200000000',2.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.00000000000',NULL,'HCFWC11A.1.300000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.00000000000',NULL,'HCFWC11A.1-300000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.100000000',NULL,'HCFWC11A.1.100000001',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.100000000',NULL,'SF-00000000000000002',0.20,0.1,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.100000001',NULL,'HCFWC11A.1.1-1000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.100000001',NULL,'HCFWC11A.1.1-2000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.100000001',NULL,'HCFWC11A.1.1-3000000',2.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.100000001',NULL,'HCFWC11AJL0000000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.200000000',NULL,'HCFWC11A.1.200000001',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.200000000',NULL,'SF-00000000000000002',0.004,0.1,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.200000001',NULL,'HCFWC11A.1.2-1000000',1.00,0,0,NULL,1.00 UNION ALL
        SELECT 'HCFWC11A.1.200000001',NULL,'HCFWC11A.1.2-2000000',1.00,0,0,NULL,1.00
    )
    ,BOM AS (
        SELECT ProductID,
               SubProdID,
               Convert(varchar(max),ProductID+'\'+SubProdID) path
          FROM prdBOMMats
         WHERE ProductID = 'HCFWC11A.00000000000'
        UNION ALL
        SELECT p.ProductID,
               p.SubProdID,
               Convert(varchar(max),b.path+'\'+p.SubProdID) path
          FROM BOM b
          JOIN prdBOMMats p
            ON b.SubProdID = p.ProductID
    )
        SELECT p.* --,b.path
          FROM BOM b
          JOIN prdBOMMats p
            ON b.ProductID = p.ProductID
           AND b.SubProdID = p.SubProdID
      ORDER BY b.path
    带 path 的结果
    ProductID                OrderID SubProdID              QtyOfBatch   WastingRate   MatSource  MatsRe   BatchAmount path
    -------------------- ----------- -------------------- ------------ ------------- ----------- ----------- ------------- ------------------------------------------------------------------------------------
    HCFWC11A.00000000000        NULL HCFWC11A.1.100000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.100000000
    HCFWC11A.1.100000000        NULL HCFWC11A.1.100000001        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.100000000\HCFWC11A.1.100000001
    HCFWC11A.1.100000001        NULL HCFWC11A.1.1-1000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.100000000\HCFWC11A.1.100000001\HCFWC11A.1.1-1000000
    HCFWC11A.1.100000001        NULL HCFWC11A.1.1-2000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.100000000\HCFWC11A.1.100000001\HCFWC11A.1.1-2000000
    HCFWC11A.1.100000001        NULL HCFWC11A.1.1-3000000        2.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.100000000\HCFWC11A.1.100000001\HCFWC11A.1.1-3000000
    HCFWC11A.1.100000001        NULL HCFWC11AJL0000000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.100000000\HCFWC11A.1.100000001\HCFWC11AJL0000000000
    HCFWC11A.1.100000000        NULL SF-00000000000000002        0.200           0.1           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.100000000\SF-00000000000000002
    HCFWC11A.00000000000        NULL HCFWC11A.1.200000000        2.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.200000000
    HCFWC11A.1.200000000        NULL HCFWC11A.1.200000001        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.200000000\HCFWC11A.1.200000001
    HCFWC11A.1.200000001        NULL HCFWC11A.1.2-1000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.200000000\HCFWC11A.1.200000001\HCFWC11A.1.2-1000000
    HCFWC11A.1.200000001        NULL HCFWC11A.1.2-2000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.200000000\HCFWC11A.1.200000001\HCFWC11A.1.2-2000000
    HCFWC11A.1.200000000        NULL SF-00000000000000002        0.004           0.1           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.200000000\SF-00000000000000002
    HCFWC11A.00000000000        NULL HCFWC11A.1.300000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1.300000000
    HCFWC11A.00000000000        NULL HCFWC11A.1-100000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1-100000000
    HCFWC11A.00000000000        NULL HCFWC11A.1-200000000        2.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1-200000000
    HCFWC11A.00000000000        NULL HCFWC11A.1-300000000        1.000           0.0           0        NULL          1.00 HCFWC11A.00000000000\HCFWC11A.1-300000000
      

  9.   


    膜拜,就是我想要的结果,谢谢我想问的是,这种sql 结构,csdn上面  哪里有或者 能不能  详细说下 什么意思
      

  10.   

    你是问CTE递归吗?
    给你个详细说明的地址
    http://www.cnblogs.com/lileiprc/articles/1869478.html