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

求存储过程: 父子码的相对用量
sql_server2000表T1:

pID           sID           yl
--------------------
a                 m               2
a                 n               3
m                 p               1
p                 t               4
m                 s               2
s                 t               2

如何建立一个存储过程(或函数)
求任意一对ID的用量,如:

pID=a,sID=p   则yl=2*1=2
pID=a,sID=t   则yl=2*1*4+2*2*2=16


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

這是一個函數,你稍修改就可以使用了


create function dbo.aa(@ITEM_CODE VARCHAR(20))
returns @table table(PARENT VARCHAR(20),ITEM_CODE VARCHAR(20),SHW_QTY DECIMAL(10,2),QTY_PER DECIMAL(10,2),STOP VARCHAR(2),level int)
AS
BEGIN
declare @level int
set @level=1
insert INTO @table
SELECT PARENT,ITEM_CODE,SHW_QTY,QTY_PER,STOPBREAK,@level
FROM BOM1 WHERE PARENT=@ITEM_CODE COLLATE Latin1_General_BIN

WHILE @@rowcount> 0
BEGIN
set @level=@level+1
insert into @table
SELECT A.PARENT,A.ITEM_CODE,A.SHW_QTY,A.QTY_PER,A.STOPBREAK ,@level
FROM BOM1 A,@table B WHERE A.PARENT=B.ITEM_CODE COLLATE Latin1_General_BIN
and B.level=@level-1
END
return
END

SELECT * into #t1 FROM aa( 'C1078AN33037AR ')a