gpt4 book ai didi

SQL server 查询 Material list 数量

转载 作者:行者123 更新时间:2023-12-01 12:26:22 25 4
gpt4 key购买 nike

我有一份 Material list (bom)。我们称此 BOM 为 301755。

BOM 301755 由这些部分组成

    31161201 = need 1 pc of this
29975413 = need 2 pcs of this
299756 = need 2 pcs of this
And 305958 = need 1 pc of this

这将是零级。

现在让我们关注其中的一部分。零件号:29975413。零件 29975413 由:

PLTSSL902 = 1pc
CAPSSL902 = 1pc
PIPSSL4SCH40 = 3.96
And LABSTR = 0.166

现在我们需要 2 个 29975413。我如何进行查询才能显示如下:

    PLTSSL902 = 1pc x 2 = 2 pc
CAPSSL902 = 1pc x 2 = 2 pc
PIPSSL4SCH40 = 3.96 x 2 = 7.92
And LABSTR = 0.166 x 2 = 0.332

我画这个更容易enter image description here读书。 :)

谢谢

最佳答案

为了让它在应用中更通用一些,我稍微修改了@dazedandconfused 的回答:

;WITH bom as (
SELECT pid p,cid c, qty q, 0 bomlvl FROM #t WHERE pid='301755' // start id
UNION ALL
SELECT pid, cid, q*qty, bomlvl+1 FROM #t INNER JOIN bom ON c=pid
)
SELECT * from bom a WHERE NOT EXISTS (SELECT 1 FROM bom WHERE p=a.c)

此查询计算每行的 BOM 级别,并且将仅列出 BOM 中没有子级的那些元素,而不管您的 BOM 可能有多少级别。可以找到 fiddle here .

我的示例将提供结果:

p        c            q     bomlvl 
-------- ------------ ----- ------
305958 311620 4 1
305958 311620 0.1 1
299756 RDBSSL012 0.2 1
299756 RDBSSL012 6.834 1
29975413 PLTSSL902 2 1
29975413 CAPSSL4SCH40 2 1
29975413 PIPSSL4SCH40 7.92 1
29975413 LABSTR 0.332 1
31161201 PIPSSL2SCH40 4 1

您可以更进一步,根据它们的 c-id 对结果进行分组,以获得它们在特定 BOM 中使用的总量。表值函数将是编写此函数的最佳方式,您可以在其中将初始 Id 作为参数传递。我无法在我的 data.stackexchange-fiddle 中演示这一点,因为函数无法引用临时表,但函数定义应该大致如下所示:

CREATE FUNCTION bomqty ( @pid varchar(20) ) RETURNS TABLE AS BEGIN
;WITH bom as (
SELECT pid p,cid c, qty q, 0 bomlvl FROM tbl WHERE pid=@pid
UNION ALL
SELECT pid, cid, q*qty, bomlvl+1 FROM tbl INNER JOIN bom ON c=pid
)
RETURN SELECT c item,sum(q) totalqty FROM bom a
WHERE NOT EXISTS (SELECT 1 FROM bom WHERE p=a.c)
GROUP BY c
END;

然后可以像使用任何其他表一样使用该函数,如下所示:

SELECT * FROM bomqty('301755')

这会得到你

item         totalqty 
------------ --------
311620 4.1
CAPSSL4SCH40 2
LABSTR 0.332
PIPSSL2SCH40 4
PIPSSL4SCH40 7.92
PLTSSL902 2
RDBSSL012 7.034

关于SQL server 查询 Material list 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39153256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com