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中文網其他相關文章!