You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求SQL Server查询:按WorkspaceID分组统计需创建的唯一文件夹总数

SQL Server 查询:按 WorkspaceID 计算需创建的文件夹总数

核心逻辑是将每个完整文件夹路径拆分为所有层级的子路径(比如a\b\c拆分为a、a\b、a\b\c),去重后统计每个WorkspaceID下的唯一子路径数量——每个唯一子路径对应一个需要创建的文件夹,父路径已存在的会被去重,不会重复计数。

以下是高效的实现语句:

WITH RecursivePaths AS (
    -- 初始层:提取每个路径的第一个层级子路径
    SELECT
        WorkspaceID,
        FolderPath,
        LEFT(FolderPath, CHARINDEX('\', FolderPath + '\') - 1) AS SubPath,
        STUFF(FolderPath, 1, CHARINDEX('\', FolderPath + '\'), '') AS RemainingPath
    FROM YourTableName
    WHERE FolderPath <> '' -- 排除空路径

    UNION ALL

    -- 递归层:生成后续层级的子路径
    SELECT
        rp.WorkspaceID,
        rp.FolderPath,
        rp.SubPath + '\' + LEFT(rp.RemainingPath, CHARINDEX('\', rp.RemainingPath + '\') - 1),
        STUFF(rp.RemainingPath, 1, CHARINDEX('\', rp.RemainingPath + '\'), '')
    FROM RecursivePaths rp
    WHERE rp.RemainingPath <> '' -- 剩余路径为空时停止递归
)
-- 按WorkspaceID分组,统计去重后的子路径总数
SELECT
    WorkspaceID,
    COUNT(DISTINCT SubPath) AS TotalFoldersToCreate
FROM RecursivePaths
GROUP BY WorkspaceID;

关键说明

  • 递归CTE RecursivePaths 会自动生成每个文件夹路径对应的所有层级子路径,完全覆盖示例中的计数规则
  • 使用COUNT(DISTINCT SubPath)确保每个文件夹只被计数一次,避免父路径重复统计
  • 请将语句中的YourTableName替换为你的实际表名

内容的提问来源于stack exchange,提问作者Himanshu Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:03:12