我正在尝试使用SQL中的递归CTE创建物料清单。但是,我遇到匹配类型的问题,我无法解释原因。我已经看过几个有同样问题的人的线程,但我得到的唯一想法是转换为相同的类型。这适用于列数量但不适用于零件和位置,如下所示。
WITH iterate (Module, Part, Description, Quantity, Position)
AS (
SELECT DISTINCT
@item, CAST(@item AS VARCHAR(100)), parts.Description, CAST(1 AS DECIMAL), CAST(NULL AS VARCHAR(100))
FROM (ProductItems AS parts
INNER JOIN ObjectReference AS ref
ON parts.Item = @item)
UNION ALL
SELECT
@item, CAST(parts.Item AS VARCHAR(100)), parts.Description, CAST(ref.Qty AS DECIMAL), CAST(ref.Pos AS VARCHAR(100))
FROM iterate
INNER JOIN ObjectReference AS ref
ON ref.Child = iterate.module
INNER JOIN ProductItems AS parts
ON ref.Parent = parts.Item
)
SELECT TOP 1000 *
FROM iterate
我收到以下两条错误消息:
在递归查询“iterate”的“Part”列中,锚和递归部分之间的类型不匹配。
在递归查询“iterate”的“位置”列中,锚和递归部分之间的类型不匹配。
您对此有解释并提供可能的解决方案吗?
我将非常感激。谢谢!
干杯, 斯蒂芬