DataTabledataTable=DBServiceHelper.ExecuteDataSet(this.Context,"select distinct FID from T_ENG_BOMCHILD where FENTRYID in ("+string.Join(",",listnumber)+")").Tables[0];
stringsql=string.Format(@"/*dialect*/with stepCTE AS
(
select b.FMATERIALID as f, a.FMATERIALID as z,a.FID,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER,1 AS Lev from T_ENG_BOMCHILD a inner join ( select * from T_ENG_BOM where FNUMBER in({0})) b on a.FID=b.FID
select b.FMATERIALID as f, a.FMATERIALID as z,a.FID,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER,1 AS Lev,b.FCREATEORGID,b.FUSEORGID from T_ENG_BOMCHILD a inner join ( select * from T_ENG_BOM where FID in({0})) b on a.FID=b.FID
inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID
union all
select c.f as f ,c.z as z,c.FID,c.FUNITID,c.FENTRYID,c.FSEQ,c.FNUMBER,cte.Lev+1 from
select c.f as f ,c.z as z,c.FID,c.FUNITID,c.FENTRYID,c.FSEQ,c.FNUMBER,cte.Lev+1,c.FCREATEORGID,c.FUSEORGID from
(
select a.FMATERIALID z ,b.FMATERIALID f,a.FID,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER from T_ENG_BOMCHILD a inner join T_ENG_BOM b on a.FID=b.FID inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID
select a.FMATERIALID z ,b.FMATERIALID f,a.FID,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER,b.FCREATEORGID,b.FUSEORGID from T_ENG_BOMCHILD a inner join T_ENG_BOM b on a.FID=b.FID inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID
) c
inner join stepCTE cte on cte.z=c.f
)
select stepCTE.*,f.FERPCLSID,engbom.FDOCUMENTSTATUS,engbom.FNUMBER as BOMFNUMBER,engbom.FMATERIALID as BOMFMATERIALID from stepCTE
left join t_BD_MaterialBase f on stepCTE.z=f.FMATERIALID
left join T_ENG_BOM engbom on stepCTE.z=engbom.FMATERIALID where stepCTE.Lev=1",BillNo);
left join T_ENG_BOM engbom on stepCTE.z=engbom.FMATERIALID where stepCTE.Lev=1",string.Join(",",ids));