產品配件清單查詢示例 sql

2021-09-08 16:15:23 字數 1763 閱讀 8005

create table item(id int,name varchar(10),wast decimal(2,2))

insert item select 1,n'a產品',0.01

union  all  select 2,n'b產品',0.02

union  all  select 3,n'c產品',0.10

union  all  select 4,n'd配件',0.15

union  all  select 5,n'e物料',0.03

union  all  select 6,n'f物料',0.01

union  all  select 7,n'g配件',0.02

create table bom(itemid int,childid int)

insert bom select 1,4

union  all select 1,7   --a產品由d配件和g配件組成

union  all select 2,1

union  all select 2,6

union  all select 2,7   --b產品由f物料及g配件組成

union  all select 4,5

union  all select 4,6    --d配件由f物料組成

union  all select 3,2

union  all select 3,1    --c產品由a產品和b產品組成

gocreate function f_bom(

@itemids varchar(1000), --要查詢物料清單及生產量的產品編號列表(逗號分隔)

@num   int          --要生產的數量

)returns @t table(itemid int,childid int,nums int,level int)

asbegin

declare @level int

set @level=1

insert @t select a.itemid,a.childid,round(@num/(1-b.wast),0),@level

from bom a,item b

where a.childid=b.id

and charindex(','+rtrim(a.itemid)+',',','+@itemids+',')>0

while @@rowcount>0 and @level<140

begin

set @level=@level+1

insert @t select a.itemid,b.childid,round(a.nums/(1-c.wast),0),@level

from @t a,bom b,item c

where a.childid=b.itemid

and b.childid=c.id

and a.level=@level-1

endreturn

endgo

--呼叫函式展開產品1、2、3的結構及計算生產10個產品時,各需要多少個配件

select a.itemid,itemname=b.name,

a.childid,childname=c.name,

a.nums,a.level

from f_bom('1,2,3',10) a,item b,item c

where a.itemid=b.id

and a.childid=c.id

order by a.itemid,a.level,a.childid

產品配件清單查詢示例 sql

create table item id int,name varchar 10 wast decimal 2,2 insert item select 1,n a產品 0.01 union all select 2,n b產品 0.02 union all select 3,n c產品 0.10 ...

sql跨伺服器查詢示例

sql跨伺服器查詢應該如何使用呢?下面的例子將會給您一些啟示,供您學習參考,希望可以使您對sql跨伺服器查詢有更深的認識。在寫到乙個sql 語句時,於由集團內部部門多,用到的系統也就多,當然資料庫的伺服器也多個了。在做車間車輛保養時,保養的材料的新增,必須和物資裡的名稱保持一致。但是物資系統的資料庫...

幾個Java分隔後組裝sql查詢示例

1 判斷常量寫前面是因為變數可能就為非法的,在未進行判斷而出現異常 if 3 a if null a 2 逗號分隔查詢 if strutils.isblankornull labstandardvo.getname tempsql name like tempstr i tempsql 最終組裝的s...