Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql BOM递归CTE/输入数据以完成查询_Sql_Common Table Expression_Recursive Query - Fatal编程技术网

Sql BOM递归CTE/输入数据以完成查询

Sql BOM递归CTE/输入数据以完成查询,sql,common-table-expression,recursive-query,Sql,Common Table Expression,Recursive Query,我进行了递归cte查询,以获取特定零件号的物料清单,但我需要的是询问我需要BOM表的零件号。它的工作原理很好,只是如果我不能很容易地查询不同的零件号,它就不起作用了 查询如下: WITH BOM_CTE(COMPONENT, PARENT,QTY,LVL) AS (SELECT i.fcomponent, i.fparent, i.fqty, 1 AS LVL FROM dbo.inboms AS i INNER JOIN dbo.invcur ON i.fparent = dbo.invc

我进行了递归cte查询,以获取特定零件号的物料清单,但我需要的是询问我需要BOM表的零件号。它的工作原理很好,只是如果我不能很容易地查询不同的零件号,它就不起作用了

查询如下:

WITH BOM_CTE(COMPONENT, PARENT,QTY,LVL)

AS (SELECT i.fcomponent, i.fparent, i.fqty, 1 AS LVL

FROM dbo.inboms AS i INNER JOIN dbo.invcur ON i.fparent = dbo.invcur.fcpartno
AND i.fparentrev = dbo.invcur.fcpartrev INNER JOIN dbo.inmastx ON dbo.invcur.fcpartno
=dbo.inmastx.fpartno AND dbo.invcur.fcpartrev = dbo.inmastx.frev

WHERE(i.fparent = '124-5130')

UNION ALL

SELECT     i.fcomponent, i.fparent, i.fqty, BOM_CTE_1.LVL + 1 AS INC_LVL

FROM dbo.inboms AS i INNER JOIN BOM_CTE AS BOM_CTE_1 ON i.fparent=BOM_CTE_1.COMPONENT)



SELECT     B.PARENT, B.COMPONENT, B.QTY, B.LVL
FROM         BOM_CTE AS B LEFT OUTER JOIN
                        BOM_CTE AS C ON B.PARENT = C.COMPONENT
 GROUP BY B.PARENT, B.COMPONENT, B.QTY, B.LVL
 ORDER BY B.LVL
如您所见,CTE第一部分中的WHERE子句将为我提供结果,但此查询无法在Excel中以图形方式表示,因此我无法使用参数来查询零件号


关于如何实现这一点,您有什么想法吗?

不清楚您在问什么-是“如何将Excel中的参数传递到我的查询中”?您还没有显示要查询的表或其内容的任何示例数据,所以很难说。提及您的数据库引擎和版本通常也是一个好主意。我只是查询一个名为inboms的表,其中包含一列上的父数据作为fparent,子数据作为fcomponent。正在运行MS SQL 2008 R2。