日期:2014-05-18  浏览次数:20484 次

一个想了两个星期都未解决的问题!!!
CREATE   TABLE   [dbo].[tbl_Bom]   (--   一个简单的BOM表
[DH]   [varchar]   (50)     NOT   NULL   ,--   产品代号
[LJDH]   [varchar]   (50)   NULL   ,--   零件代号
[YL]   [decimal](18,   5)   NULL   ,--   标准用量
[DW]   [varchar]   (50)   NULL   ,--   单位
[ZB]   [smallint]   NULL   ,--   栈别
[CPTR]   [bit]   NULL   --   是否有下一级
)   ON   [PRIMARY]

DH       [LJDH] [YL]     [DW] [ZB] [CPTR]
C010004B         C010004B-1 1.00000     pcs NULL 1
C010004B         C010004B-2 1.00000     pcs NULL 1
C010004B-1       B101520402000 .00250     pcs 1 0
C010004B-1       B101530232000 .00280     pcs 1 0
C010004B-2       B101260232000 .00320     pcs 1 0


我现在想得到

DH [LJDH] [YL] [DW] [ZB]
C010004B B101520402000 .00250 pcs 1
C010004B B101530232000 .00280 pcs 1
C010004B B101260232000 .00320 pcs 1

这个函数该如何写啊?

------解决方案--------------------

select b.dh,a.ljdh,a.yl,a.dw,a.zb
from tbl_Bom a left join tbl_Bom b on a.dh = b.ljdh
where b.dh is not null
------解决方案--------------------
--结果
C010004B B101520402000 .00250 pcs 1
C010004B B101530232000 .00280 pcs 1
C010004B B101260232000 .00320 pcs 1


------解决方案--------------------
select DH=C010004B,LJDH,YL,DW,ZB
from tbl_Bom
where ZB is not null

行不
------解决方案--------------------
如果层数未定,最好写个存储过程,在存储过程内使用游标