我不是SQL方面的专家,可以做简单的联接和联合查询,我想做的是提取彼此相关的Order的摘录。我相信我可以使用递归CTE来获取所需的摘要。
当前流程是如果要修改订单,则取消原始交易并创建新订单。两个订单都有不同的订单ID,这些ID是主键。您可能会遇到以下情况:订单被修改x次。 “ x”是完全可变的。
订单详细信息包含在表A1中。 Order_ID是主键 订单彼此关联的方式在表A2中。 Order_ID是新订单,Parent_Order_ID是原始订单。
到目前为止,我有以下内容
WITH DT_TEST AS(
select * from
A1 inner join A1 on A1.Order_Id = b.Parent_Order_Id
)
SELECT * FROM DT_TEST
我知道我需要与锚进行联合,但是如果有人可以将我指向正确的方向,我不知道我需要什么语法。感谢您的帮助。
答案 0 :(得分:0)
我们可以在SQL Server中将递归CTE措辞为基本查询和递归查询之间的联合。可能棘手的部分是在递归查询中,它由基本表与CTE本身的连接组成。请注意,连接条件是基表中给定的Parent_Order_Id
与前一个CTE中的某个Order_Id
匹配。
WITH DT_TEST AS (
-- base query
SELECT Order_Id, Parent_Order_Id
FROM A1
WHERE Parent_Order_Id IS NULL
UNION ALL
-- recursive query
SELECT a.Order_Id, a.Parent_Order_Id
FROM A1 a
INNER JOIN DT_TEST b
ON a.Parent_Order_Id = b.Order_Id
)
SELECT * FROM DT_TEST;