34,837
社区成员




SELECT TOP 1 @RoughRMOI = a.roleb_id
FROM (
SELECT a2.roleb_id AS roleb_id
FROM GetChildOrderItem2 AS a2
JOIN t_taskorderitem b
ON a2.roleb_id = b.roleb_id
AND b.QUALIFICATION_ID = @qualification_id
JOIN t_task c
ON b.rolea_id = c.obj_id
AND c.type = @RoughTaskid
union ALL
SELECT a1.roleb_id AS roleb_id
FROM GetChildOrderItem1 AS a1
JOIN t_taskorderitem b
ON a1.roleb_id = b.roleb_id
AND b.QUALIFICATION_ID = @qualification_id
JOIN t_task c
ON b.rolea_id = c.obj_id
AND c.type = @RoughTaskid
) a
WHERE a.roleb_id IS NOT NULL --加上条件
函数这里改下, 再试呢?DECLARE
@ForgingRMOI UNIQUEIDENTIFIER, --锻造路线点物料订货OBJID
@RoughTaskid NVARCHAR, --任务类型
@qualification_id UNIQUEIDENTIFIER
--下面3个变量赋实际值
SET @ForgingRMOI='?'
SET @RoughTaskid='?'
SET @qualification_id='?'
----BEGIN
DECLARE @RoughRMOI UNIQUEIDENTIFIER = NULL;
WITH GetChildOrderItem1 AS
(
SELECT roleA_id,
roleB_id
FROM T_OrderItemOrder
WHERE roleA_id = @ForgingRMOI
AND QUALIFICATION_ID = @qualification_id
UNION ALL
SELECT a.roleA_id,
a.roleB_id
FROM T_OrderItemOrder a
INNER JOIN GetChildOrderItem1 b
ON a.roleA_id = b.roleB_id
WHERE a.QUALIFICATION_ID = @qualification_id
),
GetChildOrderItem2 AS(
SELECT roleA_id,
roleB_id
FROM T_OrderItemOrder
WHERE roleB_id = @ForgingRMOI
AND QUALIFICATION_ID = @qualification_id
UNION ALL
SELECT a.roleA_id,
a.roleB_id
FROM T_OrderItemOrder a
INNER JOIN GetChildOrderItem2 b
ON a.roleB_id = b.roleA_id
WHERE a.QUALIFICATION_ID = @qualification_id
)
SELECT TOP 1 @RoughRMOI = a.roleb_id
FROM (
SELECT a2.roleb_id AS roleb_id
FROM GetChildOrderItem2 AS a2
JOIN t_taskorderitem b
ON a2.roleb_id = b.roleb_id
AND b.QUALIFICATION_ID = @qualification_id
JOIN t_task c
ON b.rolea_id = c.obj_id
AND c.type = @RoughTaskid
union ALL
SELECT a1.roleb_id AS roleb_id
FROM GetChildOrderItem1 AS a1
JOIN t_taskorderitem b
ON a1.roleb_id = b.roleb_id
AND b.QUALIFICATION_ID = @qualification_id
JOIN t_task c
ON b.rolea_id = c.obj_id
AND c.type = @RoughTaskid
) a
SELECT @RoughRMOI;
----END