如何创建一个 function/method 来计算文件在特定文件夹中的数量 - T-SQL

How to create a function/method which counts how may files are within a particular folder - T-SQL

我需要帮助创建某种 function/method 来计算特定文件夹中有多少文件。这是我正在使用的示例数据集:

FullPath Type Age (Years)
Computer\User01\MyDocuments\ Folder 4
Computer\User01\MyDocuments\thisisafile.xlsx File 2.2
Computer\User01\MyDocuments\anotherfile.doc File 1
Computer\User01\MyDocuments\onemorefile.doc File 1.5
Computer\User01\MyDocuments\secondfile.pptx File 1.6

从样本数据集可以看出,文件夹:“Computer\User01\MyDocuments”包含4个文件。我可以编写以下代码来显示此文件夹中有多少文件:

 SELECT COUNT(*) AS No_of_files
 FROM SampleDataSet
 WHERE Type = 'File'
 AND FullPath LIKE 'Computer\User01\MyDocuments\%'

但是,我的数据集包含数十万个文件夹,所有文件夹都关联了不同数量的文件,因此我无法每次都在 LIKE 语句中指定“FullPath”。

我想要的输出如下所示:

FullPath Type No_of_files
Computer\User01\MyDocuments\ Folder 1500
Computer\User01\Pictures\ Folder 20
Computer\User01\Desktop\ Folder 14
Computer\User01\Downloads\ Folder 10 000

有谁知道这是否可行以及是否有有效的方法?

非常感谢任何帮助,谢谢!

似乎您可以使用 table 中的 JOIN 到自身来实现此目的。像这样:

SELECT D.FullPath,
       D.[Type],
       COUNT(F.FullPath) AS Files
FROM dbo.YourTable D
     LEFT JOIN dbo.YourTable F ON F.FullPath LIKE D.FullPath + '%'
                              AND F.[Type] = 'File'
WHERE D.[Type] = 'Folder'
GROUP BY D.FullPath,
         D.[Type];