SQL Server 中的递归查询
数据分析师在将包含产品匹配的表转换为所需的分组表时遇到困难。目的是派生一个名为“groups”的新表,其中每个组由其组成产品的最小产品 ID 表示。
为了实现这一点,我们可以利用 SQL 的递归功能。以下是使用公共表表达式 (CTE) 的解决方案:
;WITH CTE AS ( SELECT DISTINCT M1.Product_ID Group_ID, M1.Product_ID FROM matches M1 LEFT JOIN matches M2 ON M1.Product_Id = M2.matching_Product_Id WHERE M2.matching_Product_Id IS NULL UNION ALL SELECT C.Group_ID, M.matching_Product_Id FROM CTE C JOIN matches M ON C.Product_ID = M.Product_ID ) SELECT * FROM CTE ORDER BY Group_ID
CTE 定义了一个递归查询,该查询从没有任何匹配产品的行开始。随后,它会识别其他匹配产品并根据最小产品 ID 对它们进行分组。可以使用 OPTION(MAXRECURSION) 子句控制递归深度。
此解决方案根据指定条件有效地将产品匹配聚合到组中。
以上是递归 SQL 查询如何根据最小产品 ID 对产品匹配进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!